我最近開始嘗試依賴注入和IoC。C#如何避免使用IoC解析器傳遞參數
這是困擾我的一個問題... 我有一個依賴解析器,基本上允許我做以下
injection.Register<IMyInterface, MySpecificType>();
這會自動解決的類型,只要東西在代碼請求它並提供MySpecificType
作爲IMyInterface
的實現。
這對ASP.NET中的控制器非常適用,例如,控制器構造函數沒有參數並且也由框架動態調用。
但是如果我有我自己的自定義類(在本例中爲MySpecificType
),並且我想要動態解決它,會發生什麼情況。也就是說,只要代碼中的某些內容需要IMyInterface
,解析器應通過MySpecificType
。
下面是一個例子:
injection.Register<IMyInterface, MySpecificType>();
public SomeClass(IMyInterface dependency)
{
//do something
}
然後在我的代碼的地方我想創建的SomeClass
一個新的實例。
var instance = new SomeClass(//What do i pass here)
我應該在構造函數中傳遞什麼。當然我可以做類似new MySpecificType()
的東西,但這會讓我的自動依賴解析器毫無意義。我應該有一個單獨的空構造函數並使用它,或者這是不可能發生的事情。
我會說,這取決於你使用IoC框架... –
如果一個類不能被解析爲完整的對象圖的一部分,這可能意味着你正試圖將_runtime data_注入到它。您應該防止這樣做:[不要使用運行時數據編寫應用程序組件](https://www.cuttingedge.it/blogs/steven/pivot/entry.php?id=99)。 – Steven