问题:
假设类:
public class MyAwesomeClass
{
private IDependCls _dependCls;
public MyAwesomeClass(IDependCls dependCls)
{
_dependCls = dependCls;
}
}
在其他地方我需要获取该类的实例,如下所示:
public class SomewhereElse
{
public void AwesomeMethod()
{
//...
// AwesomeStuff
//...
var GetErDone = new MyAwesomeClass(); // PROBLEM! No constructor with 0 arguements
}
}
问题是,我
建议的解决方案1:
A)必须制作一个额外的构造函数来解决依赖关系?例如:
public MyAwesomeClass() // new constructor
{
_dependCls = DependencyResolver.Current.GetService<IDependCls>();
}
public class SomewhereElse
{
public void AwesomeMethod()
{
var GetErDone = new MyAwesomeClass(); // IT WORKS!!
}
}
建议的解决方案 2:
AwesomeMethod
B)在之前 使用里面的解析器var GetErDone
public class SomewhereElse
{
public void AwesomeMethod()
{
var depCls = _dependCls = DependencyResolver.Current.GetService<IDependCls>();
var GetErDone = new MyAwesomeClass(depCls); // IT WORKS!!
}
}
Autofac 解决方案?
C)其他一些Autofac方式?
如果可能的话,寻找最佳实践以及良好的 Autofac 解决方案。我认为第一种方式是最糟糕的,因为可选的依赖关系可能会导致很多混乱。
概括:
我如何获得new MyAwesomeClass()
何时MyAwesomeClass
具有依赖关系?