2012-06-12 210 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

耶,解決了它!非常感謝你。 =) – 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]確實像原來職位的工作

然而

爲這些人尋找答案,在他們的Windows應用程序中使用內置的設置: myAppDefaultNameSpace.Properties .Settings.Default [NAME_OF_THAT_THINGmysettings] 是要走的路線