我想将一维字符串数组存储为appSettings
中的条目。我不能简单地将元素与,
或|
分开,因为元素本身可以包含这些字符。
我在考虑将数组存储为JSON
,然后使用JavaScriptSerializer
对其进行反序列化。
有没有“正确”/更好的方法来做到这一点?
(我的JSON
想法有点像hacky)
答案 0 :(得分:22)
您可以将AppSettings与System.Collections.Specialized.StringCollection
一起使用。
var myStringCollection = Properties.Settings.Default.MyCollection;
foreach (String value in myCollection)
{
// do something
}
每个值用新行分隔。
这是一个截图(德语IDE,但无论如何它可能都有帮助)
答案 1 :(得分:10)
对于整数,我发现以下方法更快。
首先创建一个appSettings键,其app.3config中的逗号分隔整数值。
<add key="myIntArray" value="1,2,3,4" />
然后使用LINQ
拆分并将值转换为int数组int[] myIntArray = ConfigurationManager.AppSettings["myIntArray"].Split(',').Select(n => Convert.ToInt32(n)).ToArray();
答案 2 :(得分:9)
对于字符串,这很容易,只需将以下内容添加到web.config
文件中:
<add key="myStringArray" value="fred,Jim,Alan" />
然后您可以按如下方式将值检索到数组中:
var myArray = ConfigurationManager.AppSettings["myStringArray"].Split(',');
答案 3 :(得分:5)
您也可以考虑使用自定义配置部分/集合来实现此目的。 这是一个示例:
<configSections>
<section name="configSection" type="YourApp.ConfigSection, YourApp"/>
</configSections>
<configSection xmlns="urn:YourApp">
<stringItems>
<item value="String Value"/>
</stringItems>
</configSection>
您还可以查看这个优秀的Visual Studio add-in,它允许您以图形方式设计.NET配置节,并自动生成所有必需的代码和模式定义(XSD)。
答案 4 :(得分:1)
ASP.Net Core支持它绑定字符串或对象列表。
对于上述字符串,可以通过AsEnumerable()进行检索。
或通过Get ()获得对象列表。示例如下。
appsettings.json
for args in zip(prod_name, sale_date):
cursor.execute("select * form table where product_name = '%s' and date = '%s'", args)
代表对象的类
{
...
"my_section": {
"objs": [
{
"id": "2",
"name": "Object 1"
},
"id": "2",
"name": "Object 2"
}
]
}
...
}
要从appsettings.json中检索的代码
public class MyObject
{
public string Id { get; set; }
public string Name { get; set; }
}