gpt4 book ai didi

c# - 通过依赖注入(inject)将配置传递给 webjobs

转载 作者:行者123 更新时间:2023-11-30 21:30:11 25 4
gpt4 key购买 nike

此问题基于与 this answer 相关的评论.

总而言之,问题是如何在调用 ConfigureServices 设置依赖项时将配置设置传递给 Web 作业,而无需将 IConfiguration 接口(interface)作为依赖项注入(inject)。

我认为这是一个很好的方法:

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)。

但这似乎不是最好的方法。还有什么建议吗?

最佳答案

所以让我们假设有以下配置

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

关于c# - 通过依赖注入(inject)将配置传递给 webjobs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54642015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com