2012-06-12 2 views
6

У меня есть несколько свойств, хранящихся в моем AppConfig, и теперь я хочу получить к ним доступ динамически (например, в цикле или функции).Получить динамическое свойство из настроек

Доступ к значениям с использованием MySettings.NAME_OF_THAT_THING не представляет проблемы, но что, если имя является переменной?

Я пробовал:

String propertyValue = MySettings.GetType().GetProperty("NAME_OF_THAT_THING").ToString(); 

Но единственное, что я получил обратно имя свойства. Как я могу это сделать?

+0

Каков тип MySettings? Не реализует ли он iDictionary или что-то еще? Я бы ожидал, что вы сможете делать «MySettings» («NAME_OF_THING») '... – Chris

+0

Application.Properties.Settings – user1450661

ответ

5
String propertyValue = MySettings.GetType() 
.GetProperty("NAME_OF_THAT_THING") 
.GetValue(MySettings, null); //replace MySettings with null in GetValue(...) if MySettings is a static class 
+0

Yay, это решило! Большое спасибо. =) – user1450661

0

Вы пытались использовать ConfigurationManager.AppSettings property? Вы должны быть в состоянии получить настройки с помощью следующего кода:

String propertyValue = ConfigurationManager.AppSettings["NAME_OF_THAT_THING"]; 

В статье MSDN для ConfigurationManager.AppSettings также включает в себя пример для цикла через все записи в AppSettings по индексу, а не имя.

+0

Установки, на которые ссылается OP, не сохраняются в элементе appSettings файла конфигурации, они сохраняются с использованием более сложной структуры под элементом applicationSettings. –

8

Все, что вам нужно сделать, это:

String propertyValue = Settings.Default["NAME_OF_THAT_THING"].ToString(); 

В то время как с помощью отражения, очевидно, работать, это слишком много.

+0

У меня нет «MySettings.Default»: (нет метода По умолчанию в этом контексте) – user1450661

+0

Интересно. Это приложение WinForm? Возможно, это добавляет только это свойство, если это приложение WinForm ... –

+0

@ user1450661 Попробуйте сейчас. Я перепутал Настройки и MySettings. –

0

ответ на вопрос первоначально плаката будет так: MySettings [NAME_OF_THAT_THINGmysettings] делает работу, как предыдущий пост

однако для тех людей, которые ищут ответ, используя встроенные настройки в их окна приложения: myAppDefaultNameSpace.Properties .Settings.Default [NAME_OF_THAT_THINGmysettings] - это путь

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