Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I tidigare versioner, när konfigurationen var bunden till en ordlistetyp, hoppades alla nycklar utan motsvarande värden i konfigurationen över och lades inte till i ordlistan. Beteendet har ändrats så att de här nycklarna inte längre hoppar över utan istället skapas automatiskt med sina förinställda värden. Den här ändringen säkerställer att alla nycklar som anges i konfigurationen finns i ordlistan.
Version lanserad
Förhandsversion 5 av .NET 8
Tidigare beteende
Tidigare hoppades tomma nycklar i konfigurationen över när de var bundna till en ordbokstyp. Överväg följande konfigurationssträng och bindningskod.
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}");
}
Tidigare såg du följande utdata (observera att nyckeln q3 saknas):
q1: 1
q2: 2
Nytt beteende
Från och med .NET 8 läggs tomma konfigurationsnycklar till i ordlistan med standardvärdet under konfigurationsbindningen.
Överväg koden i föregående beteendeavsnitt, som nu ger följande text som visar att q3 har lagts till i ordboken med sitt standardvärde.
q1: 1
q2: 2
q3: 0
Typ av brytande ändring
Den här ändringen är en beteendeförändring.
Orsak till ändring
Den här användarbegärande ändringen säkerställer att alla nycklar som anges i konfigurationen finns i ordlistan. Att ha alla nycklar närvarande effektiviserar processen och undviker potentiella problem med saknade nycklar.
Rekommenderad åtgärd
Verifiera och anpassa programlogik för att hantera förekomsten av de nyligen skapade ordlisteposterna med tomma värden. Om det nya beteendet inte är önskvärt tar du bort poster med tomt värde från konfigurationen. Genom att eliminera dessa poster läggs inga ordlisteposter med tomma värden till under bindningsprocessen.