Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用选项模式的集合的默认值-默认值始终保持不变_C#_.net_Configuration - Fatal编程技术网

C# 使用选项模式的集合的默认值-默认值始终保持不变

C# 使用选项模式的集合的默认值-默认值始终保持不变,c#,.net,configuration,C#,.net,Configuration,我正在构建一个简单的.NET应用程序,并使用选项模式。我的选项类很简单: 公共类MyOptions { 公共IEnumerable数据{get;set;}=新字符串[0]; } 如您所见,默认情况下,我只希望Data属性为空集合 我注意到,Data始终是一个空数组,即使我实际上为此属性提供了一些非默认配置。 我还看到,如果我将MyOptions类更改为: 公共类MyOptions { 公共IEnumerable数据{get;set;} } 为什么在提供默认值时会忽略我的配置?如何保留一些默认

我正在构建一个简单的.NET应用程序,并使用选项模式。我的选项类很简单:

公共类MyOptions
{
公共IEnumerable数据{get;set;}=新字符串[0];
}
如您所见,默认情况下,我只希望
Data
属性为空集合

我注意到,
Data
始终是一个空数组,即使我实际上为此属性提供了一些非默认配置。 我还看到,如果我将
MyOptions
类更改为:

公共类MyOptions
{
公共IEnumerable数据{get;set;}
}

为什么在提供默认值时会忽略我的配置?如何保留一些默认值,但能够通过我的配置进行更改?

如注释中所述,您需要将属性定义为

public class MyOptions 
{
   public IEnumerable<string> Data { get; set; } = = new List<string>();
}
公共类MyOptions
{
公共IEnumerable数据{get;set;}==new List();
}

代码
新字符串[0]
仅初始化容量为0的集合。

我投票以“需要调试详细信息”结束问题,因为我们不知道您如何设置非默认数据以及如何测试它。请提供一份具有相同问题的behaivour@MindSwipe这真的没关系。我使用的是.NET的选项模式,这意味着
MyOptions
是一个强类型类,在读取我的应用程序配置时将实例化它。配置可能来自多个来源。在我的例子中,它只是一个JSON文件。所以,通过“如果我真的更改了,请提供一些非默认配置”,您是说更改最终反序列化到此对象中的JSON?您使用的是
新字符串[0]
?这正在初始化容量为0的新集合。它没有在
数据
集合或其支持字段中添加任何项目?@Loreno-我可以发布与答案相同的内容吗?