为了账号安全,请及时绑定邮箱和手机立即绑定

通过依赖关系注入将配置传递给 Web 作业

通过依赖关系注入将配置传递给 Web 作业

C#
郎朗坤 2022-09-04 16:55:00
此问题基于与此答案相关的注释。总而言之,问题是如何在调用 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>();

})


查看完整回答
反对 回复 2022-09-04
  • 1 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信