Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Ao associar uma configuração usando um Dictionary<TKey,TValue> objeto em que o valor é um tipo de coleção mutável, associar à mesma chave mais de uma vez agora estende a coleção de valores em vez de substituir toda a coleção pelo novo valor.
Versão introduzida
.NET 7
Comportamento anterior
Considere o código a seguir que associa uma configuração que tem uma única chave nomeada Key a um dicionário várias vezes.
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"])}");
Antes do .NET 7, o valor de Key era sobrescrito a cada associação. O código produziu a seguinte saída:
Initially: InitialValue
Bind: NewValue
Bind again: NewValue
Novo comportamento
A partir do .NET 7, o valor do dicionário é estendido sempre que a mesma chave é associada, adicionando o novo valor, mas também mantendo todos os valores existentes na matriz. O mesmo código da seção Comportamento anterior produz a seguinte saída:
Initially: InitialValue
Bind: InitialValue, NewValue
Bind again: InitialValue, NewValue, NewValue
Tipo de mudança disruptiva
Esta é uma alteração comportamental.
Motivo da alteração
Essa alteração melhora o comportamento de associação não substituindo valores adicionados anteriormente em matrizes de valor de dicionário.
Ação recomendada
Se o novo comportamento não for satisfatório, você poderá manipular manualmente os valores dentro da matriz após a associação.