【发布时间】:2021-01-05 10:38:37
【问题描述】:
我正在构建一个简单的 .NET 应用程序,并且正在使用选项模式。我的选项类很简单:
public class MyOptions
{
public IEnumerable<string> Data { get; set; } = new string[0];
}
如您所见,默认情况下,我只希望 Data 属性为空集合。
我注意到Data ALWAYS 始终是一个空数组,即使我实际上为此属性提供了一些非默认配置。
我还看到 Data 从我的配置中正确设置,如果我将 MyOptions 类更改为:
public class MyOptions
{
public IEnumerable<string> Data { get; set; }
}
为什么在提供默认值时忽略我的配置?如何保留一些默认值,但可以通过我的配置更改它?
【问题讨论】:
-
我投票决定以“需要调试详细信息”来结束这个问题,因为我们不知道您如何设置非默认数据以及如何对其进行测试。请提供具有相同问题行为的minimal reproducible example
-
@MindSwipe 真的没关系。我正在使用 .NET 的选项模式,这意味着
MyOptions是一个强类型类,它将在读取我的应用程序的配置时被实例化。配置可能来自多个来源。就我而言,它只是一个 JSON 文件。 -
那么,“如果我真的更改了一些非默认配置”,您是在谈论更改最终反序列化为该对象的 JSON?
-
你在使用
new string[0]吗?这是初始化一个容量为 0 的新集合。它没有在Data集合或它的支持字段中添加任何项目? -
@Loreno - 我可以发布与答案相同的内容吗?
标签: c# .net configuration