C#的应用程序配置"app.config"文件...如何存储集合?

qwe*_*qwe 7 c# app-config

我正在使用C#编写服务,我需要在app.config文件中存储一个字符串列表.我有161个.

如何将此信息存储在app.config文件中?必须有一种方法,因为这些是强类型值,因此我应该在代码中轻松使用任何有效的.NET类型来访问它们!

我想避免使用一个使用逗号分隔列表的值来解决明显的性能问题.

Oma*_*man 11

我使用的是Microsoft的Visual Studio 2010.

  1. 解决方案资源管理器中,展开项目的" 属性"节点.

  2. 在" 解决方案资源管理器"中,双击要在其中添加新设置的.settings文件.此文件的默认名称是Settings.settings.

  3. Settings Designer中,为您的设置设置Name,Type,ScopeValue.每行代表一个设置.

  4. 你需要的类型是System.Collections.Specialized.StringCollection.单击"设置类型"后出现的DropDownList末尾的" 浏览"后,可以找到此位置.

  5. 单击Value TextBox 末尾出现的按钮.

  6. 在出现的对话框中逐个键入字符串.

这是怎么回事.


Fen*_*ton 10

有一篇关于在App.Config中以最佳方式保存列表的 app.config文件中存储列表(或任何自定义对象)的文章很好

实质上,您创建一个表示数据的对象.

public class MyConfig
{
    public string[] myList;
    public string someOtherValueIfYouWant;
}
Run Code Online (Sandbox Code Playgroud)

并为它编写配置处理程序......

public class ConfigSectionHandler : IConfigurationSectionHandler
{
    public const string SECTION_NAME = "MyConfig";
    public object Create(object parent, object configContext, XmlNode section)
    {
        string szConfig = section.SelectSingleNode("//MyConfig").OuterXml;
        MyConfig retConf = null;

        if (szConfig != string.Empty || szConfig != null)
        {
            XmlSerializer xsw = new XmlSerializer(typeof(MyConfig));
            MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szConfig));
            ms.Position = 0;
            retConf = (MyConfig)xsw.DeSerialize(ms);
        }
        return retConf;
    }

}
Run Code Online (Sandbox Code Playgroud)

这允许您将以下XML放在app.config文件中...

告诉app.config你的酷配置部分

<configSections>
    <section name="MyConfig" type="ConfigSectionHandler,someAssembly" />
</configSection>
Run Code Online (Sandbox Code Playgroud)

然后添加您的配置部分......

<MyConfig>
    <myList>First one</myList>
    <myList>Second one</myList>
    <myList>Keep going</myList>
    <myList>And so on</myList>
    <someOtherValueIfYouWant>some non array config</someOtherValueIfYouWant>
</MyConfig>
Run Code Online (Sandbox Code Playgroud)