2013-11-20 2 views
2

В моей web.config, я пробойная секцию конфигурации в отдельные файлы:.NET получить пользовательский раздел конфигурации как NameValueCollection

<appSettings configSource="AppSettings.config" /> 
<mySettings configSource="MySettings.config" /> 

Затем я использую ConfigurationManager для получения параметров:

NameValueCollection appSettings = System.Configuration.ConfigurationManager.AppSettings; 

NameValueCollection удобно, потому что я могу сделать:

var someSetting = appSettings["someSetting"]; 

Я хотел бы сделать то же самое для с Выборочная разделы конфигурации, но я не могу понять, как получить NameValueCollection:

Configuration configuration = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~"); 
ConfigurationSection section = configuration.GetSection("mySettings"); 
KeyValueConfigurationCollection mySettings = ((AppSettingsSection)section).Settings; 

KeyValueConfigurationCollection также работает для получения индивидуальных настроек:

var mySetting = mySettings["mySetting"].Value 

но я хотел бы, чтобы представить все мои конфигурации разделов одного и того же типа для передачи в общие процедуры обработки.

Как получить имяValueCollection для настраиваемого раздела конфигурации?

+0

Рассматривали ли вы просто построение методов расширения для обоих так интерфейс * sytactically * то же самое? –

+0

Но мне нужно передать объекты в конструктор, который принимает один параметр ... – BaltoStar

+0

Дело в том, что эти методы расширения будут доступны из любого места. Итак, вы пройдете один из них, и методы расширения будут работать. –

ответ

0

я обычно делаю это

NameValueCollection customSection 
= (NameValueCollection)ConfigurationManager.GetSection("NAMEOFSECTION"); 

затем использовать

customSection["key"] для извлечения значения

Просто будьте осторожны, как если секция не доступна, она будет возвращать null

Смежные вопросы