在appSettings中存储字符串数组?

时间:2012-05-02 17:54:31

标签: asp.net .net web-config app-config asp.net-4.0

我想将一维字符串数组存储为appSettings中的条目。我不能简单地将元素与,|分开,因为元素本身可以包含这些字符。

我在考虑将数组存储为JSON,然后使用JavaScriptSerializer对其进行反序列化。

有没有“正确”/更好的方法来做到这一点?

(我的JSON想法有点像hacky)

5 个答案:

答案 0 :(得分:22)

您可以将AppSettings与System.Collections.Specialized.StringCollection一起使用。

var myStringCollection = Properties.Settings.Default.MyCollection;
foreach (String value in myCollection)
{ 
    // do something
}

每个值用新行分隔。

这是一个截图(德语IDE,但无论如何它可能都有帮助)

enter image description here

答案 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; }
}