繁体   English   中英

通用服务定位器和IDependencyResolver的实现

[英]Common Service Locator and implementations of IDependencyResolver

我正在建立一个用于自然语言会话处理的库。 在许多方面,它的行为类似于MVC3,因为它具有控制器和操作方法。 在实例化Controller类的构造函数时,它也使用与MVC3几乎相同的方式使用依赖项注入。 主要区别在于英文句子同时替换了URL和HTTP的形式值。 路由基于匹配的句子结构; 输入的参数是英语句子中使用的单词和短语的含义。

目前,它使用Autofac进行依赖注入,但是我想删除该依赖关系,并允许调用者使用任何DI容器。

如果我在解决方案中使用P&P / Codeplex 通用服务定位器项目,则调用者仍然需要针对我的引擎公开的接口实例提供其自己的IServiceLocator实现。 如果我使用MVC3中的IDependencyResolver ,则至少存在从各种DI容器到该接口的映射的现有实现。

我是不是该:-

  1. 使用Common Service Locator并强制调用者实现映射类。
  2. 使用已经具有到其他容器的映射的MVC 3 IDependencyResolver接口。
  3. 接受一个object作为依赖项解析器,然后通过鸭式输入它来获取我需要的一种方法,这样我就可以使用MVC3接口,甚至不必依赖ASP.NET MVC3。
  4. 其他?

根据定义,Common Service Locator是一个永不更改且不需要特定版本的接口程序集。

此外,所有通用IOC库现在都具有可连接到通用服务定位器的实现。

因此,选项1是最佳选择,而新版本的Common Service Locator破损的风险实际上为零。

感谢Philip Laureano协助回答此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM