Портирование параметров конфигурации из netcoreapp1.1 в netcoreapp2.0

В netcoreapp1.1 мой конфиг был определен в Startup, который имел это:

public Startup(IHostingEnvironment env)
{
  _configuration = 
    new ConfigurationBuilder()
    .SetBasePath(env.ContentRootPath)
    .AddJsonFile("appsettings.json")
    .Build();
}

private readonly IConfigurationRoot _configuration;

public IServiceProvider ConfigureServices(IServiceCollection services)
{
  services.AddOptions();
  services.Configure<Stuff1>(_configuration.GetSection("stuff1"));
  services.Configure<Stuff2>(_configuration.GetSection("stuff2"));

  services.AddDbContext<Context>(options =>
    options.UseSqlite(_configuration.GetConnectionString("DefaultConnection")),    
  );
}

Но в netcoreapp2.0 конфиг определяется отдельно в Program, Так Startup теперь только это:

public IServiceProvider ConfigureServices(IServiceCollection services)
{
  var configuration = //???   how do I get this?

  services.AddOptions();
  services.Configure<Stuff1>(configuration.GetSection("stuff1"));
  services.Configure<Stuff2>(configuration.GetSection("stuff2"));

  services.AddDbContext<Context>(options =>
    options.UseSqlite(configuration.GetConnectionString("DefaultConnection")),    
  );
}

Так как мне получить IConfigurationRoot в ConfigureServices(), так что я могу настроить мой строго типизированный Stuff1 а также Stuff2 варианты, и другие вещи, как строка подключения?

1 ответ

Решение

Оказывается, он автоматически регистрируется в контейнере и доступен так:

public Startup(IConfiguration configuration)
{
    _configuration = configuration;
}

public readonly IConfiguration _configuration;

Это работает для меня, но я думаю, что это также можно использовать IConfigurationRoot,

Другие вопросы по тегам