如何在运行时将键值对存储在应用程序设置中?

Posted

技术标签:

【中文标题】如何在运行时将键值对存储在应用程序设置中?【英文标题】: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 序列化类的唯一方法,还是有其他方法?

【问题讨论】:

好像你已经回答了你自己的问题。 :) 【参考方案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 一样是非通用的。

以上是关于如何在运行时将键值对存储在应用程序设置中?的主要内容,如果未能解决你的问题,请参考以下文章

从 app.config 配置部分将键值对读入字典

使用 Apache Spark 将键值对缩减为键列表对

将键值对添加到 Javascript 对象中

PDO fetchAll 将键值对分组到 assoc 数组中

Redis数据类型:HashesGeo操作指令

将键值对数据批量加载到 HBASE