我最近从 StructureMap 跳到了 Ninject。一切都很顺利,直到我意识到 Ninject 没有 StructureMap 的 ObjectFactory(服务定位器)的版本。
我发现了 Common Service Locator,它为包括 Ninject 在内的任何 IOC 容器提供了服务定位器模式。它在我的“启动”项目中效果很好——例如网站。但是,如果我尝试从子项目(例如 Core 或 Data)访问 ServiceLocator.Current,那么 CommonServiceLocator 似乎不知道我的任何依赖关系映射。
如何从子项目中使用 Common Service Locator?
注意我知道关于 ServiceLocator 作为模式/反模式的辩论。我发现在作为反模式的 ServiceLocator 和作为反模式的贫血域模型之间存在权衡 -有时使用服务定位器更容易且可维护。