我在测试方面没有丰富的经验,但是我正在为我创建的类设置Singleton实例注入。但是,我不知道如何调用该类,如果要调用,则需要构造函数。如果我创建一个额外的空构造函数,则依赖关系将显示为null。
我花了几天时间寻找文档,但是到处都显示了如何注入示例的示例,但是我找不到后来实例化该类的人。 我也看到了一些示例,但是其中许多示例都使用由框架自动实例化的MVC控制器。
Connector.cs
public class Connector
{
private IConfiguration _configuration;
public Connector(IConfiguration configuration) {
_configuration = configuration;
}
public Connector() {
}
public string DoSomething() {
//return Something related to _configuration
}
}
startup.cs
public 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();
}
如何通过注入的配置调用连接器?我缺少任何依赖关系解决方案?我打错班了吗?
我希望有人可以给我一些启发。
答案 0 :(得分:2)
使用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();
// ...
}