2016-05-19 6 views
14

Der folgende Code ist aus den Beispielen unter ausgeschnitten.Konfiguration der Optionen von IConfigurationRoot funktioniert nicht?

public void ConfigureServices(IServiceCollection services) 
{ 
    // Setup options with DI 
    services.AddOptions(); 

    // Configure MyOptions using config 
    services.Configure<MyOptions>(Configuration); 

    // Configure MyOptions using code 
    services.Configure<MyOptions>(myOptions => 
    { 
     myOptions.Option1 = "value1_from_action"; 
    }); 

Der Aufruf von services.Configure<MyOptions>(Configuration); verursacht einen Kompilierungsfehler:

cannot convert from 'Microsoft.Extensions.Configuration.IConfigurationRoot' to 'System.Action'

manuell die Optionen funktioniert gut einrichten. Fehle ich etwas wirklich offensichtlich hier?

Antwort

20

hatte ich das gleiche Problem und ich fand heraus Sie diese Erweiterung zu einem Projekt hinzufügen müssen:

Microsoft.Extensions.Options.ConfigurationExtensions

+4

Genauer gesagt, als eine Abhängigkeit in der project.json – robbpriestley

+0

Arbeitete auch für mich. –

3

Sie benötigen das folgende nuget Paket zu Ihren ASP-Core hinzufügen Projizieren Sie, wenn Sie die stark typisierte Konfiguration auf diese Weise konfigurieren möchten.

Microsoft.Extensions.Options.ConfigurationExtensions 

Die Erweiterungsmethoden im Paket enthalten ermöglicht es Ihnen, die stark typisierte Konfiguration so, wie Sie wollen und wie die meisten Tutorials zeigen zu konfigurieren.

services.Configure<MyOptions>(Configuration); 

Alternativ, könnten Sie ein anderes Bindemittel Paket hinzufügen:

Microsoft.Extensions.Configuration.Binder 

Konfiguration würde dann wie folgt aussehen:

services.AddOptions(); 
services.Configure<MyOptions>(x => Configuration.Bind(x)); 

Dies ist die Kehrseite der so viele modular mit verpackt up-Erweiterungen. Es wird leicht übersehen, wo Funktionalität existiert.

Verwandte Themen