satymale’s diary

日々の忘備録

設定ファイルの値を取得する

設定ファイルの内容をControllerで使う方法が分からなかったので調べてみました。

config.json

{
    "Data": {
        "DefaultConnection": {
            "ConnectionString": "test"
        }
    }
}

Startup.cs

public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv) {

   var builder = new ConfigurationBuilder(appEnv.ApplicationBasePath)
       .AddJsonFile("config.json")
       .AddJsonFile($"config.{env.EnvironmentName}.json", optional: true);

    builder.AddEnvironmentVariables();
    Configuration = builder.Build();
}

public IConfiguration Configuration { get; set; }

// For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services) {
    services.AddMvc();
    services.Configure<Config>(Configuration);
}

Config.cs

public class Config {
    public Data Data { get; set; }
}

Data.cs

public class Data {
    public DefaultConnection DefaultConnection { get; set; }
}

DefaultConnection.cs

public class DefaultConnection {
    public string ConnectionString { get; set; }
}

HomeController.cs

public class HomeController : Controller {

    private Config _config;

    public HomeController(IOptions<Config> config) {
        _config = config.Options;
    }
}