Изменение поведения .NET 10: привязка конфигурации к записи IEnumerable имеет отсутствующие записи, когда параметры, допC#

Место общения программистов C#
Ответить
Anonymous
 Изменение поведения .NET 10: привязка конфигурации к записи IEnumerable имеет отсутствующие записи, когда параметры, доп

Сообщение Anonymous »

У нас есть веб-приложение, конфигурация которого содержится в файле appsettings.json. Конфигурация включает коллекцию пользовательского типа со значениями, допускающими значение NULL. До обновления до .NET 10 коллекция включала экземпляры с нулевыми записями в полях, допускающих значение null. После обновления до .NET 10 в коллекции отсутствуют все записи с нулевым полем. Это ожидаемое поведение связано с изменениями в https://learn.microsoft.com/en-us/dotne ... -preserved или ошибкой в ​​привязке конфигурации? Я не понимаю, как изменения, обсуждаемые в этом документе, могут привести к отсутствию записи в конфигурации.
Этапы воспроизведения
Я создал базовое веб-приложение в Visual Studio. Программа program.cs включает в себя:

Код: Выделить всё

var builder = WebApplication.CreateBuilder(args);

var options = builder.Configuration.GetSection("CustomOptions").Get();

builder.Services.AddControllers();

var app = builder.Build();

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();

public record Options
{
public string? EnableFeatureX { get; init; }
public IEnumerable Users { get; init; } = [];
}

public record User
(
int Id,
string? Name
);
и файл appsettings.json выглядит следующим образом:

Код: Выделить всё

{
"Logging":
{
"LogLevel":
{
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"CustomOptions":
{
"EnableFeatureX": null,
"Users": [
{ "Id": 1, "Name": "Noah" },
{ "Id": 2, "Name": null }
]
}
}
Ожидаемое поведение
Я ожидаю увидеть, что объект "options" при запуске имеет две записи в Users IEnumerable: одну с идентификатором: 1, имя: "Noah" и одну с идентификатором: 2, имя: null
Фактическое поведение
Только объект "options" имеет одну запись, идентификатор: 1, имя: "Ной"

Подробнее здесь: https://stackoverflow.com/questions/798 ... has-missin
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»