我有一些屬性存儲在我的AppConfig中,現在我想動態地訪問它們(例如在循環或函數中)。從設置中獲取動態屬性
使用MySettings.NAME_OF_THAT_THING訪問值是沒有問題的,但如果名稱是可變的呢?
我想:
String propertyValue = MySettings.GetType().GetProperty("NAME_OF_THAT_THING").ToString();
但我回來的唯一的事情就是屬性的名稱。我怎樣才能做到這一點?
我有一些屬性存儲在我的AppConfig中,現在我想動態地訪問它們(例如在循環或函數中)。從設置中獲取動態屬性
使用MySettings.NAME_OF_THAT_THING訪問值是沒有問題的,但如果名稱是可變的呢?
我想:
String propertyValue = MySettings.GetType().GetProperty("NAME_OF_THAT_THING").ToString();
但我回來的唯一的事情就是屬性的名稱。我怎樣才能做到這一點?
String propertyValue = MySettings.GetType()
.GetProperty("NAME_OF_THAT_THING")
.GetValue(MySettings, null); //replace MySettings with null in GetValue(...) if MySettings is a static class
耶,解決了它!非常感謝你。 =) – user1450661
您是否嘗試過使用ConfigurationManager.AppSettings property?您應該能夠通過下面的代碼,讓您的設置:
String propertyValue = ConfigurationManager.AppSettings["NAME_OF_THAT_THING"];
的MSDN文章ConfigurationManager.AppSettings還包括用於通過指數通過的所有條目的AppSettings的循環,而不是名稱的例子。
OP所指的設置未存儲在配置文件的appSettings元素中,它們使用applicationSettings元素下的更復雜的結構進行存儲。 –
所有你需要做的是:
String propertyValue = Settings.Default["NAME_OF_THAT_THING"].ToString();
在使用反射顯然會工作,這是矯枉過正。
我沒有「MySettings.Default」:(沒有方法在這方面默認) – user1450661
有趣。它是一個WinForm應用程序嗎?如果它是WinForm應用程序,它可能只會添加該屬性... –
@ user1450661立即嘗試。我混淆了設置和MySettings。 –
答案的原單海報的問題是這樣的: MySettings [NAME_OF_THAT_THINGmysettings]確實像原來職位的工作
然而爲這些人尋找答案,在他們的Windows應用程序中使用內置的設置: myAppDefaultNameSpace.Properties .Settings.Default [NAME_OF_THAT_THINGmysettings] 是要走的路線
什麼是MySettings的類型?它沒有實現iDictionary或什麼?我希望你能夠做'MySettings(「NAME_OF_THING」)... ... – Chris
Application.Properties.Settings – user1450661