从设置中获取动态属性
Posted
技术标签:
【中文标题】从设置中获取动态属性【英文标题】:Get dynamic property from Settings 【发布时间】:2012-06-15 08:30:06 【问题描述】:我的 AppConfig 中存储了一些属性,现在我想动态访问它们(例如在循环或函数中)。
使用 MySettings.NAME_OF_THAT_THING 访问值没有问题,但如果名称是可变的呢?
我试过了:
String propertyValue = MySettings.GetType().GetProperty("NAME_OF_THAT_THING").ToString();
但我得到的唯一信息是该物业的名称。我该怎么做?
【问题讨论】:
MySettings 的类型是什么?它没有实现 iDictionary 什么的吗?我希望你能够做到MySettings("NAME_OF_THING")
...
Application.Properties.Settings
【参考方案1】:
String propertyValue = MySettings.GetType()
.GetProperty("NAME_OF_THAT_THING")
.GetValue(MySettings, null); //replace MySettings with null in GetValue(...) if MySettings is a static class
【讨论】:
【参考方案2】:您是否尝试过使用ConfigurationManager.AppSettings property?您应该可以通过以下代码获取您的设置:
String propertyValue = ConfigurationManager.AppSettings["NAME_OF_THAT_THING"];
有关 ConfigurationManager.AppSettings 的 MSDN 文章还包括一个示例,用于按索引而不是名称循环遍历 AppSettings 中的所有条目。
【讨论】:
OP 引用的设置不存储在配置文件的 appSettings 元素中,它们使用更复杂的结构存储在 applicationSettings 元素下。【参考方案3】:您需要做的就是:
String propertyValue = Settings.Default["NAME_OF_THAT_THING"].ToString();
虽然使用反射显然会起作用,但它有点过头了。
【讨论】:
我没有“MySettings.Default”:(在这种情况下没有默认方法) 有趣。它是一个 WinForm 应用程序吗?如果它是 WinForm 应用程序,它可能只会添加该属性... @user1450661 立即尝试。我混淆了 Settings 和 MySettings。【参考方案4】:原始海报问题的答案如下: MySettings[NAME_OF_THAT_THINGmysettings] 像以前的帖子一样工作
但是,对于那些在 Windows 应用程序中寻找使用内置设置的答案的人: myAppDefaultNameSpace.Properties.Settings.Default[NAME_OF_THAT_THINGmysettings] 是要走的路
【讨论】:
以上是关于从设置中获取动态属性的主要内容,如果未能解决你的问题,请参考以下文章
js+jquery动态设置/添加/删除/获取元素属性的两种方法集锦对照(动态onclick属性设置+动态title设置)