Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önceki sürümlerde, yapılandırma bir sözlük türüne bağlandığında, yapılandırmada karşılık gelen değerleri olmayan tüm anahtarlar atlandı ve sözlüğe eklenmiyordu. Bu anahtarlar artık atlanamayacak, bunun yerine varsayılan değerleriyle otomatik olarak oluşturulacak şekilde davranış değişti. Bu değişiklik, yapılandırmada listelenen tüm anahtarların sözlük içinde bulunmasını sağlar.
Sürüm kullanıma sunulmuştur
.NET 8 Önizleme 5
Önceki davranış
Daha önce, bir sözlük türüne bağlı olduğunda yapılandırmadaki boş anahtarlar atlanıyordu. Aşağıdaki yapılandırma dizesini ve bağlama kodunu göz önünde bulundurun.
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}");
}
Daha önce aşağıdaki çıkışı görüyor olacaktınız (anahtarın q3 eksik olduğuna dikkat edin):
q1: 1
q2: 2
Yeni davranış
.NET 8'den başlayarak, yapılandırma bağlaması sırasında boş yapılandırma anahtarları varsayılan değerleriyle birlikte sözlüğe eklenir.
Önceki davranış bölümünde yer alan ve şimdi sözlüğe varsayılan değeriyle eklenen metni gösteren q3 kodu göz önünde bulundurun:
q1: 1
q2: 2
q3: 0
Kesinti yaratan değişiklik türü
Bu değişiklik davranışsal bir değişikliktir.
Değişiklik nedeni
Kullanıcı tarafından istenen bu değişiklik, yapılandırmada listelenen tüm anahtarların sözlük içinde bulunmasını sağlar. Tüm anahtarların mevcut olması işlemi kolaylaştırır ve eksik anahtarlarla ilgili olası sorunları önler.
Önerilen eylem
Uygulama mantığınızı doğrulayın ve yeni oluşturulan sözlük girdilerinin boş değerlerle varlığına uyum sağlayacak şekilde uyarlayabilirsiniz. Yeni davranış istenmeyen bir davranışsa, yapılandırmadan boş değer girdilerini kaldırın. Bu girdiler ortadan kaldırılarak, bağlama işlemi sırasında boş değerlere sahip sözlük girdileri eklenmez.