【问题标题】:How to store key-value pairs in application settings at runtime?如何在运行时将键值对存储在应用程序设置中?
【发布时间】:2010-09-15 19:07:09
【问题描述】:

如何在运行时使用应用程序设置 api 将对象的动态键值对存储在 app.config 中?

我一直在努力思考,但找不到任何有意义的示例或文档。

我似乎无法在 XML 中序列化 .Net 字典类以将它们存储在 app.config 中

是使用自定义 XML 序列化类的唯一方法,还是有其他方法?

【问题讨论】:

  • 好像你已经回答了你自己的问题。 :)

标签: c# .net settings app-config


【解决方案1】:

你应该能够做这样的事情:

// Open App.Config of executable
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

// Add an Application Setting with a name Key and a Value stored in variable called Value
config.AppSettings.Settings.Add("Key", Value );

// Save the changes in App.config file.
config.Save(ConfigurationSaveMode.Modified);

【讨论】:

    【解决方案2】:

    在网上搜索了一些之后,我发现了一篇非常好的(虽然很长)文章,它详细描述了 .Net 配置模型:

    Unraveling the Mysteries of .NET 2.0 Configuration

    我还发现了一些非常有用的东西:

    Configuration Section Designer

    添加了一个视觉工作室,用于直观地设计配置部分并生成相应的 XSD 文件。我希望有人觉得这很有用。

    【讨论】:

    • 谢谢,我知道我以前见过这个,但不记得怎么做了。谷歌搜索“配置文件 C# 中的键值对”让我来到这里。干杯:)。
    【解决方案3】:

    一直认为在运行时更改 app.config 被认为是不好的做法。 app.config 应该用于程序设置和配置;不适用于应用程序实际修改的动态事物。

    建议您为动态对象创建单独的“KeyValue.xml”文件。

    【讨论】:

      【解决方案4】:

      根据您的具体需要,您可以尝试 System.Collections.ObjectModel.KeyedCollection。这仅在您可以从项目本身派生项目的密钥时才有效,但在这种情况下,它可以用于此目的。

      【讨论】:

        【解决方案5】:

        它是通用字典吗?如果是这样:

        XML Serializable Generic Dictionary

        【讨论】:

        • scalvert,我想将任何 xml 可序列化对象存储在字典中,而不仅仅是相同类型的项目。基本上字典应该像 HashTable 一样是非通用的。
        猜你喜欢
        • 1970-01-01
        • 2012-01-31
        • 2021-07-26
        • 2016-09-13
        • 2020-03-23
        • 1970-01-01
        • 2011-01-14
        • 1970-01-01
        相关资源
        最近更新 更多