Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Dříve byla použita výhradně k vyvolání výjimky, BinderOptions.ErrorOnUnknownConfiguration pokud v konfiguraci existovala hodnota, ale ne v modelu, ke které je vázána. Nyní, pokud je tato vlastnost nastavena na true, je vyvolána výjimka, pokud hodnotu v konfiguraci nelze převést na typ hodnoty v modelu.
Verze byla představena
.NET 8 Preview 1
Předchozí chování
Dříve následující kód tiše ignoroval výjimky pro pole, která obsahovala neplatné výčty.
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.
}
Nové chování
Počínaje rozhraním .NET 8, pokud nelze hodnotu konfigurace převést na typ hodnoty v modelu, se vyvolá InvalidOperationException.
Typ zásadní změny
Tato změna je změna chování.
Důvod změny
Předchozí chování bylo pro některé vývojáře matoucí. Nastavili BinderOptions.ErrorOnUnknownConfiguration na true a očekávali, že se vyvolá výjimka, pokud došlo k nějakému problému při vazbě konfigurace.
Doporučená akce
Pokud má vaše aplikace konfigurační hodnoty, které nelze převést na vlastnosti v vázaném modelu, změňte nebo odeberte hodnoty.
Případně nastavte BinderOptions.ErrorOnUnknownConfiguration hodnotu false.
Ovlivněná rozhraní API
- 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>)