구성 바인더에 의해 사전에 빈 키가 추가됨
이전 버전에서는 구성이 사전 형식에 바인딩되면 구성에 해당 값이 없는 키는 건너뛰고 사전에 추가되지 않았습니다. 해당 키를 더 이상 건너뛰지 않고 대신 기본값을 사용하여 자동으로 만들어지도록 동작이 변경되었습니다. 이렇게 변경하면 구성에 나열된 모든 키가 사전 내에 존재하게 됩니다.
도입된 버전
.NET 8 미리 보기 5
이전 동작
이전에는 사전 형식에 바인딩될 때 구성의 빈 키를 건너뛰었습니다. 다음 구성 문자열과 바인딩 코드를 고려합니다.
var json = @"{
""Queues"": {
""q1"": {
""V"": 1
},
""q2"": {
""V"": 2
},
""q3"": {
}
}
}";
public class Q
{
public Dictionary<string, QueueValue> Queues { get; set; } = new();
}
public class QueueValue
{
public int V { get; set; }
}
var configuration = new ConfigurationBuilder()
.AddJsonStream(StringToStream(json))
.Build();
Q options = new Q();
configuration.Bind(options);
foreach (var kvp in options.Queues)
{
Console.WriteLine($"{kvp.Key}: {kvp.Value.V}");
}
이전에는 다음과 같은 출력이 표시되었습니다(q3
키가 누락됨).
q1: 1
q2: 2
새 동작
.NET 8부터 구성 바인딩 중에 빈 구성 키가 기본값으로 사전에 추가됩니다.
이제 q3
이 기본값으로 사전에 추가되었음을 보여 주는 다음 텍스트를 출력하는 이전 동작 섹션의 코드를 살펴봅니다.
q1: 1
q2: 2
q3: 0
호환성이 손상되는 변경의 형식
이 변경 사항은 동작 변경입니다.
변경 이유
이 사용자 요청 변경으로 인해 구성에 나열된 모든 키가 사전 내에 존재하게 됩니다. 모든 키가 있으면 프로세스가 간소화되고 키 누락으로 인한 잠재적인 문제가 방지됩니다.
권장 작업
빈 값으로 새로 만들어진 사전 항목의 존재를 수용하도록 애플리케이션 논리를 확인하고 조정합니다. 새로운 동작이 바람직하지 않은 경우 구성에서 빈 값 항목을 제거합니다. 이러한 항목을 제거하면 바인딩 프로세스 중에 빈 값이 있는 사전 항목이 추가되지 않습니다.
영향을 받는 API
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET