c# - .NET Core 2 中的 Startup.cs 中的 "IConfiguration

在aspnet core 2中,当我们想在启动期间访问配置时,据我所知,我们可以通过依赖注入(inject)来做到这一点。

对于下面的代码,我们如何将IConfiguration 对象传递给具有依赖注入(inject)优势的此类;

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();
    }
}

如果有人能详细解释这一点,我将非常高兴。

最佳答案

IConfiguration 实例的依赖注入(inject)是在内部为您处理的。如果您浏览source code,很容易找到技术细节。 .在这种情况下,有一个模仿基本 DI 容器的辅助类,你可以看到这个 here .

关于c# - .NET Core 2 中的 Startup.cs 中的 "IConfiguration object is registered with DI by default"怎么办,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55013575/

相关文章:

javascript - 使用 css 或 html5 的置换贴图

reactjs - JEST - 如何使用同一 __test__ 文件夹中的实用程序管理不同的测试文

python - 无法导入 python 模块

python - 在python中的不规则网格上集成二维数据

python - 使用 colorama 更改 Python 输入的文本颜色

node.js - 如何在 Node js 中使用 Google Hangout 聊天 spaces

node.js - 如何让我的 Node.js 应用程序集群化以仅运行一次任务?

php - 如何使用 php 代码在 WHM/Cpanel 中以编程方式创建数据库?

javascript - 使 postcss 与 material ui 的 jss 一起工作

javascript - Discord.js 机器人,临时静音命令不会静音