[英]How can “IConfiguration object is registered with DI by default” in Startup.cs in .NET Core 2
在aspnet core 2中,當我們想在啟動過程中訪問配置時,據我所知,由於依賴注入,我們可以做到這一點。
對於下面的代碼,我們如何利用Dependency Injection的優點將IConfiguration
對象傳遞給此類;
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
}
我看到一個句子:
“默認情況下,IConfiguration對象已向DI注冊。”
我們怎樣才能成功呢?
在program.cs中有這樣的代碼,我們是否使用以下代碼在startup.cs類中設置IConfiguration
對象? 我認為.UseStartup()代碼為我們完成了這項工作(將IConfiguration對象傳遞給Startup類)。 但是如何?
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration(SetupConfiguration)
.UseStartup<Startup>();
private static void SetupConfiguration(WebHostBuilderContext ctx, IConfigurationBuilder builder)
{
//Remove the default configuration options
builder.Sources.Clear();
builder.AddJsonFile("config.json", false, true).
AddEnvironmentVariables();
}
}
如果有人可以詳細解釋這一點,我將非常高興。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.