【发布时间】:2021-02-17 23:22:32
【问题描述】:
根据the docs我们可以在启动类中注入如下服务:
- IWebHostEnvironment
- IHostEnvironment
- IConfiguration
但是我们也可以在Configure()方法中使用方法注入来解析这些服务:
可以在 Configure 方法签名中指定其他服务,例如 IWebHostEnvironment、ILoggerFactory 或 ConfigureServices 中定义的任何内容。如果这些服务可用,就会注入这些服务。
我使用哪种注入变体有区别吗?
具体来说,在构造函数中解析IWebHostEnvironment,然后通过私有字段在Configure()方法中访问它与将其作为方法参数注入有区别吗?
public class Startup
{
private readonly IWebHostEnvironment env;
public Startup(IWebHostEnvironment env)
{
this.env = env;
}
public void Configure(IApplicationBuilder app)
{
if (this.env.IsDevelopment())
[...]
}
}
对比
public class Startup
{
public Startup() {}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
[...]
}
}
【问题讨论】:
-
我认为基本上如果您需要以多种方法使用服务,那么将其注入构造函数中是有意义的。否则,注入方法中。
标签: c# asp.net-core .net-core startup