C# 通过依赖项注入将配置传递给webjobs
此问题基于与相关的评论 总之,问题是在调用ConfigureServices设置依赖项时,如何将配置设置传递给web作业,而不将IConfiguration接口作为依赖项注入 我原以为这是一个好办法:C# 通过依赖项注入将配置传递给webjobs,c#,asp.net-core,dependency-injection,configuration,azure-webjobs,C#,Asp.net Core,Dependency Injection,Configuration,Azure Webjobs,此问题基于与相关的评论 总之,问题是在调用ConfigureServices设置依赖项时,如何将配置设置传递给web作业,而不将IConfiguration接口作为依赖项注入 我原以为这是一个好办法: IHostBuilder builder = new HostBuilder; ... builder.ConfigureServices((context, services) => { services.AddSingleton<IMyModelClass, MyMod
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()));
})
因此,它封装了这些设置,并可以传递给需要访问配置设置的其他类(如MyServiceClass)
但这似乎不是最好的办法。还有什么建议吗?因此,我们假设有以下配置
{
"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>();
})
builder.ConfigureServices((上下文,服务)=>{
var配置=context.configuration。
var myModel=configuration.GetSection(“MyModelSection”).Get();
服务。AddSingleton(myModel);
services.AddSingleton();
})
您还应该看看这个
builder.ConfigureServices((context, services) => {
var configuration = context.Configuration.
var myModel = configuration.GetSection("MyModelSection").Get<MyModelClass>();
services.AddSingleton<IMyModelClass, MyModelClass>(myModel);
services.AddSingleton<IMyServiceClass, MyServiceClass>();
})