我想在appSettings中存储一个一维字符串数组,但不能简单地用,或|分隔元素,因为元素本身可能包含这些字符。我想将数组存储为JSON,然后使用JavaScriptSerializer对其进行反序列化。是否有“正确”/更好的方法来做到这一点?(My JSON的想法感觉有点过时)
appSettings
,
|
JSON
JavaScriptSerializer
uqjltbpv1#
您可以将AppSettings与System.Collections.Specialized.StringCollection配合使用。
System.Collections.Specialized.StringCollection
var myStringCollection = Properties.Settings.Default.MyCollection; foreach (String value in myStringCollection) { // do something }
每个值由新行分隔。这是一个屏幕截图(德语IDE,但它可能会有帮助)
tuwxkamq2#
NET核心支持它绑定一个字符串或对象列表。对于上面提到的字符串,可以通过AsEnumerable()检索它。或者通过Get<List<MyObject>>()创建对象列表。appsettings.json:
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>>();
nimxete23#
对于字符串,这很简单,只需将以下内容添加到web.config文件中:
web.config
<add key="myStringArray" value="fred,Jim,Alan" />
然后您可以将值撷取到数组中,如下所示:
var myArray = ConfigurationManager.AppSettings["myStringArray"].Split(',');
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();
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)。
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[]>();
6条答案
按热度按时间uqjltbpv1#
您可以将AppSettings与
System.Collections.Specialized.StringCollection
配合使用。每个值由新行分隔。
这是一个屏幕截图(德语IDE,但它可能会有帮助)
tuwxkamq2#
NET核心支持它绑定一个字符串或对象列表。
对于上面提到的字符串,可以通过
AsEnumerable()
检索它。或者通过
Get<List<MyObject>>()
创建对象列表。appsettings.json
:类来表示对象
要从
appsettings.json
检索的代码nimxete23#
对于字符串,这很简单,只需将以下内容添加到
web.config
文件中:然后您可以将值撷取到数组中,如下所示:
ebdffaop4#
对于整数,我发现下面的方法更快。
首先,在app.config中创建一个appSettings键,用逗号分隔整数值。
然后使用LINQ将值拆分并转换为整型数组
zvokhttg5#
您也可以考虑使用自定义配置节/Collection来实现此目的。下面是一个示例:
您还可以查看这个优秀的Visual Studio add-in,它允许您以图形方式设计.NET配置节,并自动生成所有必需的代码和它们的架构定义(XSD)。
vcirk6k66#
这可能是你正在寻找的:
存储键NoLongerMaintained的appsettings与字符串数组
然后,您可以使用