2012-12-06 31 views
3

我在這行代碼得到一個錯誤:團結 - 依賴解析失敗(沒有註冊)

using (IMaterialClient rawMaterialServiceProxy = 
ServerUtility.Container.Resolve<IMaterialClient>()) 

錯誤:

Resolution of the dependency failed... The current type, Xxx, is an interface and cannot be constructed. Are you missing a type mapping?

我不是註冊一個具體的IMaterialClient。在剛剛看過的Pluralsight視頻中,他們說你不必註冊所有類型,因爲如果沒有指定,Unity會找到一個實現。有改變嗎?我錯過了什麼嗎?爲什麼不解決?運行此程序時,具有實際IMaterialClient實現的程序集位於bin文件夾中。

回答

5

如果他們說關於Unity,他們是錯的。 Unity將解析具體類型(.Resolve<MyClass>),但接口必須通過將它們與具體類型關聯來顯式註冊。

有擴展,如Unity Auto Registration提供這些功能;我沒有與他們的經驗。

5

我不知道Unity的那個功能。據我所知,它會高興地解決未註冊的具體類型,但必須具有爲任何抽象類型或接口註冊的具體類型。最好的選擇是註冊它:

ServerUtility.Container.RegisterType<IMaterialClient, ConcreteMaterialClient>();