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