Sdílet prostřednictvím


Přiřazením konfigurace ke slovníku se rozšiřují hodnoty.

Při vázání konfigurace pomocí objektu Dictionary<TKey,TValue>, jehož hodnota je proměnlivého typu kolekce, nyní vazba na stejný klíč více než jednou rozšiřuje hodnotovou kolekci namísto nahrazení celé kolekce novou hodnotou.

Verze byla představena

.NET 7

Předchozí chování

Představte si následující kód, který několikrát sváže konfiguraci s jedním klíčem pojmenovaným Key ke slovníku.

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"])}");

Před .NET 7 byla hodnota pro Key přepsána při každém vázání. Kód vytvořil následující výstup:

Initially: InitialValue
Bind: NewValue
Bind again: NewValue

Nové chování

Počínaje rozhraním .NET 7 se hodnota slovníku prodlouží pokaždé, když je stejný klíč svázaný, přidá novou hodnotu, ale zároveň zachová všechny existující hodnoty v poli. Stejný kód z oddílu Předchozí chování vytvoří následující výstup:

Initially: InitialValue
Bind: InitialValue, NewValue
Bind again: InitialValue, NewValue, NewValue

Typ zásadní změny

Tato změna je změna chování.

Důvod změny

Tato změna zlepšuje chování vazby tím, že nepřepíše dříve přidané hodnoty v polích hodnot slovníku.

Pokud nové chování není uspokojivé, můžete po vazbě ručně manipulovat s hodnotami uvnitř pole.

Ovlivněná rozhraní API