从设置中获取动态属性

10

我在我的 AppConfig 中存储了一些属性,现在我想动态地访问它们(例如,在循环或函数中访问)。

使用 MySettings.NAME_OF_THAT_THING 访问值是没有问题的,但如果名称是可变的呢?

我尝试过:

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

但是我只收到了属性的名称,我该怎么办?

MySettings的类型是什么?它没有实现iDictionary或其他什么吗?我本来以为你可以这样做MySettings("NAME_OF_THING")... - Chris
Application.Properties.Settings - user1450661
4个回答

11
你所需要做的就是:

只需要:

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

虽然使用反射可以工作,但这太过复杂。


我没有"MySettings.Default":(在此上下文中没有Default方法) - user1450661
有趣。这是一个WinForm应用程序吗?也许只有在WinForm应用程序中才会添加该属性... - Steven Doggart
@user1450661 现在试试看。我把Settings和MySettings搞混了。 - Steven Doggart

8
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

回答原帖问题的方法如下: MySettings [NAME_OF_THAT_THINGmysettings] 就像之前的帖子一样完成了任务。

然而,对于那些想要使用内置设置的 Windows 应用程序的人来说: myAppDefaultNameSpace.Properties.Settings.Default [NAME_OF_THAT_THINGmysettings] 是正确的方法。


0

你尝试过使用ConfigurationManager.AppSettings属性吗?你可以通过以下代码获取设置:

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

MSDN的ConfigurationManager.AppSettings文章还包括一个示例,通过索引而不是名称循环遍历所有AppSettings条目。


OP提到的设置不是存储在config文件的appSettings元素中,而是在applicationSettings元素下使用更复杂的结构进行存储。 - Steven Doggart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接