公共服务定位器和IDependencyResolver的实现

时间:2011-09-09 02:12:35

标签: c# .net design-patterns nlp common-service-locator

我正在为conversational natural language processing建立一个图书馆。在许多方面,它的行为与MVC3非常相似,因为它具有控制器和操作方法。它还使用依赖注入,就像MVC3实例化Controller类的构造函数时一样。主要区别在于英语句子取代了HTTP的URL和表单值;路由基于匹配句子结构;传入的参数是英语句子中使用的单词和短语的含义。

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

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

我应该: -

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

1 个答案:

答案 0 :(得分:0)

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

此外,所有常见的IOC库现在都具有连接到公共服务定位器的实现。

因此,选项1是最佳选择,并且使用新版本的公共服务定位器打破它的风险几乎为零。

感谢Philip Laureano帮助解答此问题。