0

私は、次の設定があります。登録子供IOptions

public void ConfigureServices(IServiceCollection services) 
{ 
    var configuration = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build(); 
    services.Configure<AppSettings>(configuration); 
} 

public class AppSettings 
{ 
    public ChildSettings Child { get; set; } 

    public string Property { get; set; } 
} 

public class ChildSettings 
{ 
    public string ChildProperty { get; set; } 
} 

私appSettings.jsonは、次のようになります。

{ 
    "Child": { 
     "ChildProperty": "Value" 
    } 
    "Property": "Value" 
} 

私はちょうど良い私のコントローラにIOptions<AppSettings>を注入することができます:

public class MyController : Controller 
{ 
    public MyController(IOptions<AppSettings> options) 
    { 
     ChildSettings appSettings = options.Value; 
    } 
} 

設定オブジェクトに到達するためには、いくつかのレベルを下げる必要がありますあなたは欲しい。私はそうのようIOptions<ChildSettings>を使用することができる方法はあります:

public class MyController : Controller 
{ 
    public MyController(IOptions<ChildSettings> options) 
    { 
     ChildSettings appSettings = options.Value; 
    } 
} 

答えて

1

あなたはAppSettingsオブジェクトを経由せずに直接ChildSettingsを使用したい場合は、このようなあなたのDIの設定で別のエントリとしてChildSettingsを登録する必要があります。

services.Configure<ChildSettings>(_configuration.GetSection("AppSettings:ChildSettings"));

これを行うには、appsettings.jsonファイルのルートレベルにChildSettingsを設定するだけです。 AppSettingsという名前のセクションに設定する必要はありません。