我想将一维字符串数组作为条目存储在我的appSettings
. 我不能简单地用,
or分隔元素,|
因为元素本身可能包含这些字符。
我正在考虑存储数组,JSON
然后使用JavaScriptSerializer
.
有没有“正确”/更好的方法来做到这一点?
(我的JSON
想法感觉有点hacky)
我想将一维字符串数组作为条目存储在我的appSettings
. 我不能简单地用,
or分隔元素,|
因为元素本身可能包含这些字符。
我正在考虑存储数组,JSON
然后使用JavaScriptSerializer
.
有没有“正确”/更好的方法来做到这一点?
(我的JSON
想法感觉有点hacky)
您可以将 AppSettings 与System.Collections.Specialized.StringCollection
.
var myStringCollection = Properties.Settings.Default.MyCollection;
foreach (String value in myStringCollection)
{
// do something
}
每个值由一个新行分隔。
这是一个屏幕截图(德国IDE,但无论如何它可能会有所帮助)
对于字符串很容易,只需将以下内容添加到您的web.config
文件中:
<add key="myStringArray" value="fred,Jim,Alan" />
然后您可以将值检索到数组中,如下所示:
var myArray = ConfigurationManager.AppSettings["myStringArray"].Split(',');
对于整数,我发现以下方法更快。
首先,在 app.config 中创建一个 appSettings 键,其整数值用逗号分隔。
<add key="myIntArray" value="1,2,3,4" />
然后使用 LINQ 将值拆分并转换为 int 数组
int[] myIntArray = ConfigurationManager.AppSettings["myIntArray"].Split(',').Select(n => Convert.ToInt32(n)).ToArray();
ASP.Net Core 支持它绑定字符串或对象列表。
对于前面提到的字符串,可以通过AsEnumerable()
.
或通过Get<List<MyObject>>()
. 示例如下。
appsettings.json
:
{
...
"my_section": {
"objs": [
{
"id": "2",
"name": "Object 1"
},
{
"id": "2",
"name": "Object 2"
}
]
}
...
}
表示对象的类
public class MyObject
{
public string Id { get; set; }
public string Name { get; set; }
}
要从中检索的代码appsettings.json
Configuration.GetSection("my_section:objs").Get<List<MyObject>>();
您也可以考虑为此目的使用自定义配置部分/集合。这是一个示例:
<configSections>
<section name="configSection" type="YourApp.ConfigSection, YourApp"/>
</configSections>
<configSection xmlns="urn:YourApp">
<stringItems>
<item value="String Value"/>
</stringItems>
</configSection>
您还可以查看这个出色的 Visual Studio 插件,它允许您以图形方式设计 .NET 配置部分并自动为它们生成所有必需的代码和架构定义 (XSD)。