我正在使用C#编写服务,我需要在app.config文件中存储一个字符串列表.我有161个.
如何将此信息存储在app.config文件中?必须有一种方法,因为这些是强类型值,因此我应该在代码中轻松使用任何有效的.NET类型来访问它们!
我想避免使用一个使用逗号分隔列表的值来解决明显的性能问题.
Oma*_*man 11
我使用的是Microsoft的Visual Studio 2010.
在解决方案资源管理器中,展开项目的" 属性"节点.
在" 解决方案资源管理器"中,双击要在其中添加新设置的.settings文件.此文件的默认名称是Settings.settings.
在Settings Designer中,为您的设置设置Name,Type,Scope和Value.每行代表一个设置.
你需要的类型是System.Collections.Specialized.StringCollection.单击"设置类型"后出现的DropDownList末尾的" 浏览"后,可以找到此位置.
单击Value TextBox 末尾出现的按钮.
在出现的对话框中逐个键入字符串.

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)