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

如何在自定义类构造函数中注入单例并使用它 .NET 核心 2

如何在自定义类构造函数中注入单例并使用它 .NET 核心 2

C#
慕娘9325324 2022-07-23 17:28:30
我在测试方面没有丰富的经验,但我正在为我创建的一个类设置一个单例实例注入。但是,我不知道如何调用该类。如果我打电话,我需要构造函数。如果我创建一个额外的空构造函数,则依赖项将显示为 null。我花了几天时间在文档中寻找它,但它只显示了如何注入的示例。之后我找不到如何实例化该类。另外,我看到了一些示例,但其中许多都使用 MVC 控制器,它们由框架自动实例化。Connector.cspublic class Connector{    private IConfiguration _configuration;    public Connector(IConfiguration configuration) {       _configuration = configuration;    }    public Connector() {    }     public string DoSomething() {      //return Something related to _configuration    }}startup.cspublic void ConfigureServices(IServiceCollection services){        //Other default config     services.AddSingleton(new Connector(Configuration)); } HomeController.cs public IActionResult Index() {        var x = (new Connector()).DoSomething(); //This will fail as _configuration is not injected        return View(); }如何使用注入的配置调用连接器?我错过了任何依赖解决吗?我是不是叫错了班级?我希望有人可以对此有所了解。
查看完整描述

1 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

DI 容器的想法是您不需要在方法中处理对象创建。您HomeController也不需要知道是否Connector实际上是单例。


您只需将依赖项注入构造函数。

由于您已将其配置为单例,因此 DI 容器Connector每次都会解析为同一个实例。


public class HomeController 

    private readonly Connector _connector;


    public HomeController(Connector connector)

    {

        _connector = connector;

    }


    public IActionResult Index()

    {

        var x = _connector.DoSomething();

        // ...

    }


查看完整回答
反对 回复 2022-07-23
  • 1 回答
  • 0 关注
  • 94 浏览

添加回答

举报

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