31

我想将一维字符串数组作为条目存储在我的appSettings. 我不能简单地用,or分隔元素,|因为元素本身可能包含这些字符。

我正在考虑存储数组,JSON然后使用JavaScriptSerializer.

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

(我的JSON想法感觉有点hacky)

4

5 回答 5

26

您可以将 AppSettings 与System.Collections.Specialized.StringCollection.

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

每个值由一个新行分隔。

这是一个屏幕截图(德国IDE,但无论如何它可能会有所帮助)

在此处输入图像描述

于 2012-05-02T18:10:09.140 回答
12

对于字符串很容易,只需将以下内容添加到您的web.config文件中:

<add key="myStringArray" value="fred,Jim,Alan" />

然后您可以将值检索到数组中,如下所示:

var myArray = ConfigurationManager.AppSettings["myStringArray"].Split(',');
于 2016-12-06T14:05:18.247 回答
10

对于整数,我发现以下方法更快。

首先,在 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();
于 2015-01-15T10:54:28.933 回答
10

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>>();
于 2020-07-30T14:16:09.130 回答
7

您也可以考虑为此目的使用自定义配置部分/集合。这是一个示例:

<configSections>
    <section name="configSection" type="YourApp.ConfigSection, YourApp"/>
</configSections>

<configSection xmlns="urn:YourApp">
  <stringItems>
    <item value="String Value"/>
  </stringItems>
</configSection>

您还可以查看这个出色的 Visual Studio 插件,它允许您以图形方式设计 .NET 配置部分并自动为它们生成所有必需的代码和架构定义 (XSD)。

于 2012-05-02T18:39:52.130 回答