【问题标题】: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

标签: c# .net settings app-config


【解决方案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] 是要走的路

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-06
      • 2021-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多