【发布时间】:2010-09-20 10:43:05
【问题描述】:
Changes in Ninject 2 说Ninject 支持Common Service Locator,但是我该怎么用呢?我没有找到任何手册或示例。
【问题讨论】:
标签: dependency-injection inversion-of-control ninject ninject-2 common-service-locator
Changes in Ninject 2 说Ninject 支持Common Service Locator,但是我该怎么用呢?我没有找到任何手册或示例。
【问题讨论】:
标签: dependency-injection inversion-of-control ninject ninject-2 common-service-locator
Ninject2 下载包含一个CommonServiceLocator.NinjectAdapter.dll(在 zip 文件的“扩展”文件夹中)。将此 dll 和 Ninject.dll 添加到您的项目中。
在你的应用程序的启动路径中(配置好Ninject内核后),可以使用如下代码:
IKernel ninject = ...;
var locator = new NinjectServiceLocator(ninject);
ServiceLocator.SetLocatorProvider(() => locator);
请注意,Common Service Locator (CSL) 是一个库,它提供对 IoC 容器的抽象并包含一个静态外观(实现服务定位器模式)。它是一个通用接口,开发人员可以使用它来防止依赖于特定的 IoC 实现。 CSL 对于框架开发人员特别有用。应用程序开发人员更适合使用依赖注入 (DI) 模式。如果正确使用 DI,则无需在应用程序中使用 CSL。虽然 CSL 更适合框架开发,但我发现 CSL 的使用还是有问题的。相信大多数时候通过适当的设计可以消除对此类通用界面的使用。
【讨论】: