gpt4 book ai didi

c# - 如何使用ConfigurationManager来存储结构化数据?

转载 作者:行者123 更新时间:2023-11-30 16:19:19 26 4
gpt4 key购买 nike

我可以使用 .Net ConfigurationManager 来存储字符串,但如何存储结构化数据?

例如,我可以这样做:

conf = ConfigurationManager.OpenExeConfiguration(...)
string s = "myval";
conf.AppSettings.Settings["mykey"].Value = s;
conf.Save(ConfigurationSaveMode.Modified);

我想这样做:

class myclass {
public string s;
int i;
... more elements
};

myclass c = new myclass(); c.s = "mystring"; c.i = 1234; ...

conf.AppSettings.Settings["mykey"] = cc;
conf.Save(ConfigurationSaveMode.Modified);

如何使用 ConfigurationManager 存储和检索结构化数据?

我按照@sll 的建议实现了一个解决方案。但是困难在于为配置创建一个新部分。这是如何完成的: How to Write to a User.Config file through ConfigurationManager?

最佳答案

您可以通过继承 ConfigurationSection 类来创建自己的配置节类型,并使用它来保存/加载任何自定义类型信息。

MSDN:How to: Create Custom Configuration Sections Using ConfigurationSection

顺便说一句,一个可能对您或其他人有帮助的建议:一件好事是制作自定义配置节类 immutable (没有公共(public) setter )因此您可以确保在应用程序生命周期的任何阶段都不能更改配置,但是如果您决定为依赖于配置部分类和需要部分 stub 的代码编写单元测试对于一些测试值,您可能无法设置属性值,因为没有 setter 。解决方案是提供一个从您的节类继承的新类,并使用 protected 索引器在构造函数中指定值,如下所示:

public class TestSectionClass: MyConfigurationSection
{
public TestSectionClass(string testUserName)
{
this["userName"] = testUserName;
}
}

关于c# - 如何使用ConfigurationManager来存储结构化数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15383003/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com