ConfigurationBinder vyvolá výjimku, pokud je hodnota nesprávná.

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.

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

Viz také