Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Wanneer u een configuratie met behulp van een Dictionary<TKey,TValue> object bindt waarbij de waarde een onveranderbaar verzamelingstype is, wordt de verzameling waarden meer dan één keer uitgebreid met dezelfde sleutel in plaats van de hele verzameling te vervangen door de nieuwe waarde.
Geïntroduceerde versie
.NET 7
Vorig gedrag
Houd rekening met de volgende code waarmee een configuratie met één sleutel met een naam Key meerdere keren aan een woordenlijst wordt gekoppeld.
using Microsoft.Extensions.Configuration;
IConfiguration config = new ConfigurationBuilder()
.AddInMemoryCollection()
.Build();
config["Key:0"] = "NewValue";
var dict = new Dictionary<string, string[]>() { { "Key", new[] { "InitialValue" } } };
Console.WriteLine($"Initially: {String.Join(", ", dict["Key"])}");
config.Bind(dict);
Console.WriteLine($"Bind: {String.Join(", ", dict["Key"])}");
config.Bind(dict);
Console.WriteLine($"Bind again: {String.Join(", ", dict["Key"])}");
Vóór .NET 7 werd de waarde voor Key elke keer dat het werd gekoppeld overschreven. De code heeft de volgende uitvoer geproduceerd:
Initially: InitialValue
Bind: NewValue
Bind again: NewValue
Nieuw gedrag
Vanaf .NET 7 wordt de woordenlijstwaarde steeds uitgebreid wanneer dezelfde sleutel afhankelijk is, waarbij de nieuwe waarde wordt toegevoegd, maar ook bestaande waarden in de matrix behouden blijven. Dezelfde code uit de sectie Vorig gedrag produceert de volgende uitvoer:
Initially: InitialValue
Bind: InitialValue, NewValue
Bind again: InitialValue, NewValue, NewValue
Type van brekende verandering
Deze wijziging is een gedragswijziging.
Reden voor wijziging
Deze wijziging verbetert het bindingsgedrag doordat eerder toegevoegde waarden niet worden overschreven in matrices van woordenlijstwaarden.
Aanbevolen actie
Als het nieuwe gedrag niet bevredigend is, kunt u de waarden in de matrix handmatig bewerken na binding.