Ответ 1
Это сработало -
Код:
class Program
{
static void Main(string[] args)
{
NameValueCollection nvc = ConfigurationManager.GetSection("MyAppSettings") as NameValueCollection;
for(int i=0; i<nvc.Count; i++)
{
Console.WriteLine(nvc.AllKeys[i] + " " + nvc[i]);
}
Console.ReadLine();
}
}
class ParentSection : ConfigurationSection
{
//This may have some custom implementation
}
class MyAppSettingsSection : ParentSection
{
public static MyAppSettingsSection GetConfig()
{
return (MyAppSettingsSection)ConfigurationManager.GetSection("MyAppSettings");
}
[ConfigurationProperty("", IsDefaultCollection = true)]
public NameValueConfigurationCollection Settings
{
get
{
return (NameValueConfigurationCollection)base[""];
}
}
}
Конфигурация:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<!-- <section name="MyAppSettings" type="CustomAppSettings.MyAppSettingsSection, CustomAppSettings"/> -->
<section name="MyAppSettings" type="System.Configuration.AppSettingsSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</configSections>
<MyAppSettings>
<add key="1" value="one"/>
<add key="2" value="two"/>
<add key="3" value="three"/>
<add key="4" value="four"/>
</MyAppSettings>
</configuration>
Моя главная проблема заключалась в том, что мой раздел должен был наследовать из пользовательского раздела, и я хотел вернуть NameValueCollection, когда вызывается ConfigurationManager.GetSection( "MyAppSettings" ).
Я изменил свойство type на AppSettingsSection, хотя он нигде на картинке и не работал. Теперь мне нужно выяснить, как это работает, но на данный момент хорошо, что у меня есть рабочий пример:)
Обновление. К сожалению, это был не ожидаемый способ достижения того, что было предназначено, потому что теперь пользовательский раздел вообще не входит в картину, так что, к сожалению, это не лучший способ сделать Это.
Конечно, если вы просто хотели переименовать свой раздел appsettings, это будет работать как прелесть.