Konfigurering av egenskaper fra config.json bruke services.Configure

stemmer
2

Følgende på fra en Stackoverflow spørsmål om hjelp IConfiguration globalt i mvc6 . En kommentar til den aksepterte svaret foreslår å bruke

services.Configure<SomeOptions>(Configuration);

Nå virker fint med følgende kode;

Klasse

public class SomeOptions
{
    public string MyOption { get; set; }
}

config.json

{
    MyOption: OptionValue
}

Startup.cs

public Startup(IHostingEnvironment env)
{
    Configuration = new Configuration()
        .AddJsonFile(config.json)
        .AddEnvironmentVariables();
}

public void ConfigureServices(IServiceCollection services)
{        
    services.Configure<SomeOptions>(Configuration);
}

Men config.jsonfilen ikke har noen virkelig struktur, og jeg vil at det skal se mer ut som;

{
    SomeOptions: {
        MyOption: OptionValue
    }
}

Men dette ikke binde verdiene i klassen. Er det allikevel å tillate dette?

Publisert på 05/12/2014 klokken 15:11
kilden bruker
På andre språk...                            


3 svar

stemmer
2

Hvis du ønsker å endre config.jsonstrukturen må du også endre klassestrukturen .

{
    "SomeOptions": {
        "MyOption": "OptionValue"
    }
}

kart til noe sånt

public class SomeOptions
{
    public List<MyOption> MyOptions { get; set; }
}

public class MyOption
{
    public string OptionValue { get; set; }
}
Svarte 06/12/2014 kl. 10:00
kilden bruker

stemmer
1

Du kan få tilgang bestemt verdi i config.json som:

Configuration.Get("SomeOptions:MyOption");

som returnerer

"OptionValue"

Så vil koden bli

services.Configure<SomeOptions>(options => 
        options.MyOption = Configuration.Get("SomeOptions:MyOption"));
Svarte 07/01/2015 kl. 14:02
kilden bruker

stemmer
0
services.Configure<SomeOptions>(Configuration.GetSubKey(nameof(SomeOptions)));

Bør gjøre det.

Svarte 15/05/2015 kl. 07:30
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more