【发布时间】:2019-02-12 02:32:02
【问题描述】:
此问题基于与this answer 关联的 cmets。
总而言之,问题是在调用 ConfigureServices 设置依赖项时,如何将配置设置传递给 Web 作业而不将 IConfiguration 接口作为依赖项注入。
我认为这是一个很好的方法:
IHostBuilder builder = new HostBuilder;
...
builder.ConfigureServices((context, services) =>
{
services.AddSingleton<IMyModelClass, MyModelClass>(sp => new MyModelClass(context.Configuration));
services.AddSingleton<IMyServiceClass, MyServiceClass>(sp => new MyServiceClass(new MyModelClass()));
})
这里,MyModelClass 是一个读取配置设置的类,像这样:
public class MyModelClass : IMyModelClass
{
public string MySetting { get; set; }
public MyModelClass(IConfiguration config)
{
this.MySetting = config["MySetting"];
}
}
因此它封装了这些设置,并且可以传递给需要访问配置设置的其他类(如 MyServiceClass)。
但这似乎不是最好的方法。还有什么建议吗?
【问题讨论】:
标签: c# asp.net-core dependency-injection configuration azure-webjobs