如何在Ninject 2中使用Common Service Locator

时间:2010-09-20 10:43:05

标签: dependency-injection inversion-of-control ninject ninject-2 common-service-locator

Changes in Ninject 2Ninject支持Common Service Locator,但我该如何使用它?我找不到任何手册或样本。

1 个答案:

答案 0 :(得分:27)

Ninject2下载包含CommonServiceLocator.NinjectAdapter.dll(在zip文件的'extensions'文件夹中)。将此dll和Ninject.dll添加到您的项目中。

在应用程序的启动路径中(配置Ninject内核之后),您可以使用以下代码:

IKernel ninject = ...; 

var locator = new NinjectServiceLocator(ninject);

ServiceLocator.SetLocatorProvider(() => locator);

请注意,公共服务定位器(CSL)是一个库,它提供IoC容器的抽象,并包含静态外观(实现服务定位器模式)。它是一个通用接口,开发人员可以使用它来防止依赖于特定的IoC实现。 CSL对框架开发人员特别有用。应用程序开发人员最好使用依赖注入(DI)模式。正确使用DI时,无需在应用程序中使用CSL。虽然CSL更适合框架开发,但即便在那里我发现CSL的使用存在疑问。相信大多数时候可以通过适当的设计来消除这种通用接口的使用。