Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
Lors de la liaison d’une configuration à l’aide d’un Dictionary<TKey,TValue> objet où la valeur est un type de collection mutable, la liaison à la même clé plusieurs fois étend la collection de valeurs au lieu de remplacer toute la collection par la nouvelle valeur.
Version introduite
.NET 7
Comportement précédent
Considérez le code suivant qui lie une configuration qui a une clé unique nommée Key à un dictionnaire plusieurs fois.
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"])}");
Avant .NET 7, la valeur de Key chaque liaison a été remplacée. Le code a produit la sortie suivante :
Initially: InitialValue
Bind: NewValue
Bind again: NewValue
Nouveau comportement
À compter de .NET 7, la valeur du dictionnaire est étendue chaque fois que la même clé est liée, en ajoutant la nouvelle valeur, mais en conservant également toutes les valeurs existantes dans le tableau. Le même code de la section Précédent comportement produit la sortie suivante :
Initially: InitialValue
Bind: InitialValue, NewValue
Bind again: InitialValue, NewValue, NewValue
Type de changement cassant
Ce changement est un changement de comportement.
Raison de la modification
Cette modification améliore le comportement de liaison en ne substituant pas les valeurs précédemment ajoutées dans les tableaux de valeurs de dictionnaire.
Action recommandée
Si le nouveau comportement n’est pas satisfaisant, vous pouvez manipuler manuellement les valeurs à l’intérieur du tableau après la liaison.