【发布时间】:2020-07-30 09:45:35
【问题描述】:
配置中数组的异常没有通过?!对于一维配置,这是有效的(如您所见here)。但是,当使用更多维度配置时,将忽略异常,如下例所示:
appsettings.json
{
"Value": 1,
"ArrayValue": [
{ "Value": 0 }
]
}
Config.cs
class Config
{
private int value;
public int Value
{
get => this.value;
set
{
if (value < 1)
throw new NullReferenceException(); // ExceptionType only for testing purpose
this.value = value;
}
}
public IEnumerable<ConfigArray> ArrayValue { get; set; }
}
class ConfigArray
{
private int arrayValue;
public int ArrayValue
{
get => this.arrayValue;
set
{
if (value < 1)
throw new NullReferenceException(); // ExceptionType only for testing purpose
this.arrayValue = value;
}
}
}
程序 sn-p
Config config;
try
{
IConfigurationRoot configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", false, false)
.Build();
config = configuration.Get<Config>();
//config = new Config();
//configuration.Bind(config);
}
catch (Exception ex)
{
Console.WriteLine($"Exception: {ex.Message}");
}
包
<PackageReference Include="Microsoft.Extensions.Configuration" Version="3.1.6" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="3.1.6" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.6" />
ConfigArray 中的异常没有绕过到主程序。我是否遗漏了某些内容或数组中的异常通常被配置绑定器忽略?
【问题讨论】:
标签: c# exception .net-core configuration