Delen via


Lege sleutels toegevoegd aan woordenlijst door configuratiebinding

In eerdere versies, toen de configuratie afhankelijk was van een woordenlijsttype, werden sleutels zonder bijbehorende waarden in de configuratie overgeslagen en zijn ze niet toegevoegd aan de woordenlijst. Het gedrag is zodanig gewijzigd dat deze sleutels niet meer worden overgeslagen, maar in plaats daarvan automatisch worden gemaakt met hun standaardwaarden. Deze wijziging zorgt ervoor dat alle sleutels in de configuratie aanwezig zijn in de woordenlijst.

Versie geïntroduceerd

.NET 8 Preview 5

Vorig gedrag

Eerder zijn lege sleutels in de configuratie overgeslagen wanneer deze zijn gebonden aan een woordenlijsttype. Houd rekening met de volgende configuratietekenreeks en bindingscode.

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}");
}

Eerder ziet u de volgende uitvoer (u ziet dat de sleutel q3 ontbreekt):

q1: 1
q2: 2

Nieuw gedrag

Vanaf .NET 8 worden lege configuratiesleutels toegevoegd aan de woordenlijst met hun standaardwaarde tijdens de configuratiebinding.

Houd rekening met de code uit de vorige gedragssectie , die nu de volgende tekst uitvoert die q3 is toegevoegd aan de woordenlijst met de standaardwaarde:

q1: 1
q2: 2
q3: 0

Type wijziging die fouten veroorzaken

Deze wijziging is een gedragswijziging.

Reden voor wijziging

Deze door de gebruiker aangevraagde wijziging zorgt ervoor dat alle sleutels in de configuratie aanwezig zijn in de woordenlijst. Als alle sleutels aanwezig zijn, stroomlijnt u het proces en voorkomt u potentiële problemen met ontbrekende sleutels.

Controleer uw toepassingslogica en pas deze aan zodat deze geschikt is voor de aanwezigheid van de zojuist gemaakte woordenlijstvermeldingen met lege waarden. Als het nieuwe gedrag ongewenst is, verwijdert u vermeldingen met lege waarden uit de configuratie. Als u deze vermeldingen elimineert, worden er geen woordenlijstvermeldingen met lege waarden toegevoegd tijdens het bindingsproces.

Betrokken API's