我正在爲conversational natural language processing構建一個庫。在很多方面,它的行爲很像MVC3,因爲它具有控制器和操作方法。它也使用依賴注入,就像MVC3爲Controller類實例化構造函數時一樣。主要區別在於英文句子替換了HTTP的URL和表單值;路由基於匹配的句子結構;並且傳入的參數是英語句子中使用的單詞和短語的含義。IDependencyResolver的常見服務定位器和實現
目前它使用Autofac進行依賴注入,但我想刪除該依賴關係並允許調用者使用任何DI容器。
如果我使用P & P/Codeplex上Common Service Locator項目在我的解決方案,然後主叫方仍然需要提供自己的IServiceLocator
實現對我的引擎暴露了接口的實例。如果我使用MVC3中的IDependencyResolver
,則至少存在從各種DI容器到該接口的映射的現有實現。
我應該: -
- 使用通用服務定位器和力呼叫者落實映射類。
- 使用已經映射到其他容器的MVC 3
IDependencyResolver
接口。 - 接受一個
object
作爲依賴關係解析器,然後用鴨子來獲取我需要的一個方法,這樣我就可以使用MVC3接口,甚至不需要依賴於ASP.NET MVC3。 - 其他?
沒有回答你的問題,但它可能會改變你對解決方案1的看法。IServiceLocator的實現可用於大多數流行的容器。所以沒有必要實現你自己的IServiceLocator,除非你想做不同的事情。我不知道這是否需要? –