Prázdné klíče přidané do slovníku pomocí konfiguračního vazač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.

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.

Ovlivněná rozhraní API