Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
När du binder en konfiguration med ett Dictionary<TKey,TValue> objekt där värdet är en föränderlig samlingstyp utökar bindningen till samma nyckel mer än en gång nu värdesamlingen i stället för att ersätta hela samlingen med det nya värdet.
Version lanserad
.NET 7
Tidigare beteende
Tänk på följande kod som binder en konfiguration som har en enda nyckel med namnet Key till en ordlista flera gånger.
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"])}");
Före .NET 7 skrevs värdet för Key över vid varje bindning. Koden producerade följande utdata:
Initially: InitialValue
Bind: NewValue
Bind again: NewValue
Nytt beteende
Från och med .NET 7 utökas ordlistevärdet varje gång samma nyckel är bunden, vilket lägger till det nya värdet men även behåller befintliga värden i matrisen. Samma kod från avsnittet Föregående beteende genererar följande utdata:
Initially: InitialValue
Bind: InitialValue, NewValue
Bind again: InitialValue, NewValue, NewValue
Typ av brytande ändring
Den här ändringen är en beteendeförändring.
Orsak till ändring
Den här ändringen förbättrar bindningsbeteendet genom att inte åsidosätta tidigare tillagda värden i ordlistevärdematriser.
Rekommenderad åtgärd
Om det nya beteendet inte är tillfredsställande kan du ändra värdena i matrisen manuellt efter bindningen.