或者不是自己創建對象,而是以某種方式將它們攔截或掛鉤到對象創建(例如,由MVC框架實例化的Controller)並傳遞它們所需的任何依賴關係?DI容器是否需要自己實例化對象才能使用構造器注入?
我意識到他們需要做點什麼時才能使用構造器注入創建對象,但我不清楚該容器是否需要做創造,或者如果他們以某種方式攔截對象的創建。
無論答案是什麼,是否所有的DI容器都這樣做?
我認識到這一問題可能是有目共睹的最熟悉的像StructureMap,團結,Ninject等工具......但我是新來的他們,並意識到,我真的不知道他們在幕後是如何工作的。我搜索了互聯網,找不到一個好的答案。
如果你的類接受他們的依賴關係通過構造函數參數,很難想象容器不會調用構造函數,因爲如何以其他方式獲取依賴項並正確初始化類。這在技術上是可行的,但只是調用構造函數就性能而言更容易,更安全和更快。 – Steven 2014-10-08 17:56:27
@Steven:看到我的回答,容器並不需要直接調用構造函數。 – 2014-10-08 19:03:56
@WiktorZychla:我讀了你的答案,我的評論可以被看作是對你答案的補充。我專門針對您*使用構造函數注入的情況。 – Steven 2014-10-08 19:06:43