14

Ninject 2 中的更改Ninject支持Common Service Locator,但我该如何使用它呢?我没有找到任何手册或样本。

4

1 回答 1

27

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 的使用还是有问题的。相信大多数时候可以通过适当的设计来消除对此类通用接口的使用。

于 2010-09-20T11:24:28.463 回答