Aracılığıyla paylaş


Yapılandırmayı sözlüğe bağlamak değerleri genişletir

Değerin değiştirilebilir bir koleksiyon türü olduğu bir nesne kullanarak yapılandırmayı Dictionary<TKey,TValue> bağlarken, aynı anahtara birden çok kez bağlanmak, koleksiyonun tamamını yeni değerle değiştirmek yerine değerler koleksiyonunu genişletir.

Sürüm kullanıma sunulmuştur

.NET 7

Önceki davranış

Bir sözlüğe adlı Key tek bir anahtar içeren bir yapılandırmayı birden çok kez bağlayan aşağıdaki kodu göz önünde bulundurun.

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'den önce, Key değeri her bağlama sırasında üzerine yazılırdı. Kod aşağıdaki çıkışı üretti:

Initially: InitialValue
Bind: NewValue
Bind again: NewValue

Yeni davranış

.NET 7'den başlayarak, aynı anahtar her bağlandığında sözlük değeri genişletilir, yeni değer eklenir ancak dizideki mevcut değerler korunur. Önceki davranış bölümünde yer alan aynı kod aşağıdaki çıkışı oluşturur:

Initially: InitialValue
Bind: InitialValue, NewValue
Bind again: InitialValue, NewValue, NewValue

Kesinti yaratan değişiklik türü

Bu değişiklik davranışsal bir değişikliktir.

Değişiklik nedeni

Bu değişiklik, sözlük değeri dizilerinde daha önce eklenen değerleri geçersiz kılmayarak bağlama davranışını geliştirir.

Yeni davranış tatmin edici değilse, bağlamadan sonra dizi içindeki değerleri el ile işleyebilirsiniz.

Etkilenen API'ler