Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Anteriormente, era usado apenas para gerar uma exceção se existisse um valor na configuração, BinderOptions.ErrorOnUnknownConfiguration mas não no modelo ao qual estava vinculado. Agora, se essa propriedade estiver definida como true, uma exceção também será lançada se o valor na configuração não puder ser convertido para o tipo de valor no modelo.
Versão introduzida
.NET 8 Visualização 1
Comportamento anterior
Anteriormente, o código a seguir engolia silenciosamente as exceções para os campos que continham enums inválidos:
public enum TestSettingsEnum
{
Option1,
Option2,
}
public class MyModelContainingArray
{
public TestSettingsEnum[] Enums { get; set; }
}
public void SilentlySwallowsInvalidItems()
{
var dictionary = new Dictionary<string, string>
{
["Section:Enums:0"] = "Option1",
["Section:Enums:1"] = "Option3", // invalid - ignored
["Section:Enums:2"] = "Option4", // invalid - ignored
["Section:Enums:3"] = "Option2",
};
var configurationBuilder = new ConfigurationBuilder();
configurationBuilder.AddInMemoryCollection(dictionary);
var config = configurationBuilder.Build();
var configSection = config.GetSection("Section");
var model = configSection.Get<MyModelContainingArray>(o => o.ErrorOnUnknownConfiguration = true);
// Only Option1 and Option2 are in the bound collection at this point.
}
Novo comportamento
A partir do .NET 8, se um valor de configuração não puder ser convertido para o tipo do valor no modelo, um InvalidOperationException será lançado.
Tipo de mudança disruptiva
Esta alteração é de natureza comportamental .
Motivo da mudança
O comportamento anterior era confuso para alguns desenvolvedores. Eles definiram BinderOptions.ErrorOnUnknownConfiguration para true e esperavam que uma exceção fosse lançada se algum problema fosse encontrado ao vincular a configuração.
Ação recomendada
Se o seu aplicativo tiver valores de configuração que não podem ser convertidos para as propriedades no modelo acoplado, altere ou remova os valores.
Como alternativa, defina BinderOptions.ErrorOnUnknownConfiguration como false.
APIs afetadas
- Microsoft.Extensions.Configuration.ConfigurationBinder.Bind(IConfiguration, Object, Action<BinderOptions>)
- Microsoft.Extensions.Configuration.ConfigurationBinder.Get<T>(IConfiguration, Action<BinderOptions>)
- Microsoft.Extensions.Configuration.ConfigurationBinder.Get(IConfiguration, Type, Action<BinderOptions>)