Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Beim Binden einer Konfiguration mit einem Dictionary<TKey,TValue> Objekt, bei dem der Wert ein veränderbarer Auflistungstyp ist, wird die Bindung an denselben Schlüssel mehrmals erweitert, anstatt die gesamte Auflistung durch den neuen Wert zu ersetzen.
Eingeführte Version
.NET 7
Vorheriges Verhalten
Betrachten Sie den folgenden Code, der eine Konfiguration mit einem einzelnen Schlüssel namens Key mehrfach an ein Wörterbuch bindet.
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"])}");
Vor .NET 7 wurde der Wert für Key bei jedem Bindungsvorgang überschrieben. Der Code hat die folgende Ausgabe erstellt:
Initially: InitialValue
Bind: NewValue
Bind again: NewValue
Neues Verhalten
Ab .NET 7 wird der Wörterbuchwert bei jeder Bindung desselben Schlüssels erweitert, wobei der neue Wert hinzugefügt wird, aber auch vorhandene Werte im Array beibehalten werden. Der gleiche Code aus dem Abschnitt "Vorheriges Verhalten " erzeugt die folgende Ausgabe:
Initially: InitialValue
Bind: InitialValue, NewValue
Bind again: InitialValue, NewValue, NewValue
Art der einschneidenden Änderung
Diese Änderung ist eine Verhaltensänderung.
Grund für Änderung
Diese Änderung verbessert das Bindungsverhalten, indem zuvor hinzugefügte Werte in Wörterbuchwertarrays nicht überschrieben werden.
Empfohlene Aktion
Wenn das neue Verhalten nicht zufriedenstellend ist, können Sie die Werte innerhalb des Arrays nach der Bindung manuell bearbeiten.