假設類:
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:
B)使用內部AwesomeMethod
分解前右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
有依賴性?
你真的是_optional_當你說了嗎?如果確實是可選的,那麼您可能需要考慮財產注入。如果沒有,並且你的ctor由於太多的依賴關係而混亂,也許你的班級做得太多了(另請參閱[這個答案](http://stackoverflow.com/a/2420245/1282778))。 –
我沒有關於構造函數混亂的問題,而不是創建需要構造函數注入的類的實例。 –
感謝您不要發佈解決方案答案。不像任何其他人有這個問題.../s –