Код: Выделить всё
public class MySettings
{
public int? Foo { get; set; }
public string[]? Bar{ get; set; }
}
Код: Выделить всё
{
[...]
"MySettings": {
"Foo": 42,
"Bar": [
"a",
"b",
"c"
]
}
}
Код: Выделить всё
var mySettings = config.GetSection("MySettings").Get();
Теперь мне трудно различить три других случая в appsettings.json:
A:
Код: Выделить всё
{
[...]
"MySettings": {
"Foo": 42
}
}
Код: Выделить всё
{
[...]
"MySettings": {
"Foo": 42,
"Bar": null
}
}
Код: Выделить всё
{
[...]
"MySettings": {
"Foo": 42,
"Bar": []
}
}
Я нашел много маленьких кусочков и идей из вопроса для Newtonsoft Json.NET, но я не могу понять, как это сделать втиснуть все это во что-то, что работает Microsoft.Extensions.Configuration:
- Значение по умолчанию [] для Bar, как также предлагается здесь; хотя это само по себе сломало бы A и B.
- приведет к тому, что значение null переопределит значение по умолчанию; и есть ли в System.Text.Json что-нибудь подобное?
Код: Выделить всё
MissingMemberHandling; не уверен, что Include
Код: Выделить всё
NullValueHandling; те же вопросы, что и для MissingMemberHandling
- Настраиваемый преобразователь для MySettings может сделать это, если оставить значение по умолчанию равным нулю и взять свой собственный посмотрите на JsonElement при анализе свойства; Я не знаю, где установить JsonSerializerOptions для Microsoft.Extensions.Configuration
- Некоторые атрибуты самого Bar; но какой? В System.Text.Json для начала не так уж много
Подробнее здесь: https://stackoverflow.com/questions/792 ... tings-json