我有一個服務,它的構造函數需要IMyDependency。 IMyDependency,MyDependency和服務都在同一個程序集中。 MyDependency有一個公共的無參數構造函數。funq - 通過約定自動裝配
令我驚訝的是,這並不工作:
container.RegisterAutoWired<IMyDependency>();
它拋出一個 「System.NullReferenceException」。
如果我這樣做它的工作原理:
container.RegisterAutoWiredAs<MyDependency, IMyDependency>();
不過,這樣做的:
container.RegisterAs<MyDependency, IMyDependency>();
那麼有什麼區別?如果'自動佈線'找不到具體的實現,並且對是否可以解決需要依賴關係的服務沒有任何影響,那麼什麼是自動佈線?
Funq應該能夠按照慣例找到你的具體實現嗎?如果是這樣,那麼這個約定是什麼,如果不是同名的呢?
謝謝。
所以,如果我理解正確此,我應該做的事情: container.RegisterAutoWired();但是,如果我僅在運行時(當我使用依賴項調用服務時)執行此操作,則會得到「IMyDependency類型的所需依賴項無法解析」。所以我仍然不清楚這個方法的目的,因爲容器似乎無法找到與註冊的具體類型對應的接口。 –
2013-04-26 05:01:00
這很簡單,只需要注入你註冊的內容,如果你註冊了而不是注入所有MyDependency屬性。如果你想要它注入'IMyDependency'屬性,而不是你需要調用'RegisterAs '。 –
mythz
2013-04-26 05:23:51
在我的項目中,我喜歡約200個類:MyClass:IMyClass。那麼根據這個每次我執行新類或刪除都可以爲它做佈線嗎? Unity,Windsor和StructureMap有自動裝配的習慣。 – nerijus 2015-03-11 09:42:17