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.
Aanbevolen actie
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.