如何在运行时将键值对存储在应用程序设置中?
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 一样是非通用的。以上是关于如何在运行时将键值对存储在应用程序设置中?的主要内容,如果未能解决你的问题,请参考以下文章