asp.net 是否在appSettings中存储字符串数组?

mo49yndu  于 2022-11-19  发布在  .NET
关注(0)|答案(6)|浏览(151)

我想在appSettings中存储一个一维字符串数组,但不能简单地用,|分隔元素,因为元素本身可能包含这些字符。
我想将数组存储为JSON,然后使用JavaScriptSerializer对其进行反序列化。
是否有“正确”/更好的方法来做到这一点?
(My JSON的想法感觉有点过时)

uqjltbpv

uqjltbpv1#

您可以将AppSettings与System.Collections.Specialized.StringCollection配合使用。

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

每个值由新行分隔。
这是一个屏幕截图(德语IDE,但它可能会有帮助)

tuwxkamq

tuwxkamq2#

NET核心支持它绑定一个字符串或对象列表。
对于上面提到的字符串,可以通过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>>();
nimxete2

nimxete23#

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

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

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

var myArray = ConfigurationManager.AppSettings["myStringArray"].Split(',');
ebdffaop

ebdffaop4#

对于整数,我发现下面的方法更快。
首先,在app.config中创建一个appSettings键,用逗号分隔整数值。

<add key="myIntArray" value="1,2,3,4" />

然后使用LINQ将值拆分并转换为整型数组

int[] myIntArray =  ConfigurationManager.AppSettings["myIntArray"].Split(',').Select(n => Convert.ToInt32(n)).ToArray();
zvokhttg

zvokhttg5#

您也可以考虑使用自定义配置节/Collection来实现此目的。下面是一个示例:

<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)。

vcirk6k6

vcirk6k66#

这可能是你正在寻找的:
存储键NoLongerMaintained的appsettings与字符串数组

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "NoLongerMaintained": ["BCD",
    "DDP",
    "DHF",
    "DHW",
    "DSG",
    "DTH",
    "SCH"]
}

然后,您可以使用

var NoLongerMaintained = _config.GetSection("NoLongerMaintained").Get<string[]>();

相关问题