此问题基于与此答案相关的注释。总而言之,问题是如何在调用 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)。但这似乎不是最好的方法。还有进一步的建议吗?
1 回答
蝴蝶刀刀
TA贡献1801条经验 获得超8个赞
因此,让我们假设有以下配置
{
"MyModelSection": {
"MySetting": "SomeValue"
}
}
这只是一个非常简单的例子。
关联的模型将如下所示
public class MyModelClass: IMyModelClass {
public string MySetting { get; set;}
}
以上内容可以从配置中提取,并注册到服务
builder.ConfigureServices((context, services) => {
var configuration = context.Configuration.
var myModel = configuration.GetSection("MyModelSection").Get<MyModelClass>();
services.AddSingleton<IMyModelClass, MyModelClass>(myModel);
services.AddSingleton<IMyServiceClass, MyServiceClass>();
})
- 1 回答
- 0 关注
- 85 浏览
添加回答
举报
0/150
提交
取消