Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V předchozích verzích, kdy byla konfigurace vázána na typ slovníku, byly všechny klíče bez odpovídajících hodnot v konfiguraci vynechány a nebyly přidány do slovníku. Chování se změnilo tak, aby se tyto klíče už nepřeskočily, ale automaticky se vytvořily s jejich výchozími hodnotami. Tato změna zajistí, že všechny klíče uvedené v konfiguraci budou ve slovníku.
Verze byla představena
.NET 8 Preview 5
Předchozí chování
Dříve byly prázdné klíče v konfiguraci při přiřazení k typu slovníku přeskočeny. Představte si následující konfigurační řetězec a kód vazby.
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}");
}
Dříve byste viděli následující výstup (všimněte si, že chybí klíč q3 ):
q1: 1
q2: 2
Nové chování
Od verze .NET 8 se prázdné konfigurační klíče přidají do slovníku s výchozí hodnotou během konfigurační vazby.
Představte si kód z předchozí části chování , který teď vypíše následující text, který ukazuje, že q3 byl přidán do slovníku s výchozí hodnotou:
q1: 1
q2: 2
q3: 0
Typ zásadní změny
Tato změna je změna chování.
Důvod změny
Tato změna požadovaná uživatelem zajišťuje, že se ve slovníku nacházejí všechny klíče uvedené v konfiguraci. Když máte všechny klíče, zjednoduší se proces a zabrání potenciálním problémům s chybějícími klíči.
Doporučená akce
Ověřte a přizpůsobte logiku aplikace tak, aby vyhovovala přítomnosti nově vytvořených položek slovníku s prázdnými hodnotami. Pokud je nové chování nežádoucí, odeberte z konfigurace položky s prázdnou hodnotou. Odstraněním těchto položek nebudou během procesu vazby přidány žádné položky slovníku s prázdnými hodnotami.