값이 변경 가능한 컬렉션 형식인 개체를 사용하여 Dictionary<TKey,TValue> 구성을 바인딩하는 경우 동일한 키에 두 번 이상 바인딩하면 전체 컬렉션을 새 값으로 바꾸는 대신 값 컬렉션이 확장됩니다.
도입된 버전
.NET 7
이전 동작
다음 코드는 Key라는 단일 키를 가진 구성을 여러 번 사전에 바인딩하는 것을 보여줍니다.
using Microsoft.Extensions.Configuration;
IConfiguration config = new ConfigurationBuilder()
.AddInMemoryCollection()
.Build();
config["Key:0"] = "NewValue";
var dict = new Dictionary<string, string[]>() { { "Key", new[] { "InitialValue" } } };
Console.WriteLine($"Initially: {String.Join(", ", dict["Key"])}");
config.Bind(dict);
Console.WriteLine($"Bind: {String.Join(", ", dict["Key"])}");
config.Bind(dict);
Console.WriteLine($"Bind again: {String.Join(", ", dict["Key"])}");
.NET 7 이전에는 각 바인딩마다 Key 값이 덮어씌워졌습니다. 이 코드는 다음 출력을 생성했습니다.
Initially: InitialValue
Bind: NewValue
Bind again: NewValue
새 동작
.NET 7부터는 동일한 키가 바인딩할 때마다 사전 값이 확장되어 새 값이 추가되고 배열에 기존 값도 유지됩니다. 이전 동작 섹션의 동일한 코드는 다음 출력을 생성합니다.
Initially: InitialValue
Bind: InitialValue, NewValue
Bind again: InitialValue, NewValue, NewValue
파괴적 변경 유형
이 변경 사항은 행동 변화입니다.
변경 이유
이렇게 변경하면 사전 값 배열에서 이전에 추가된 값을 재정의하지 않음으로써 바인딩 동작이 향상됩니다.
권장 작업
새 동작이 만족스럽지 않은 경우 바인딩 후 배열 내의 값을 수동으로 조작할 수 있습니다.
영향을 받는 API
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET