如何在 Ninject 2 中使用公共服务定位器

发布于 2024-09-24 07:06:04 字数 310 浏览 9 评论 0原文

Ninject 2 中的更改 表示 Ninject 支持通用服务定位器,但是我该如何使用它呢?我没有找到任何手册或样本。

Changes in Ninject 2 say that Ninject support Common Service Locator, but how do I use it? I don't find any manual or sample.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

人海汹涌 2024-10-01 07:06:04

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 的使用值得怀疑。相信大多数时候可以通过适当的设计来消除这种通用接口的使用。

The Ninject2 download contains a CommonServiceLocator.NinjectAdapter.dll (in the 'extensions' folder of the zip file). Add this dll and the Ninject.dll to your project.

In the startup path of your application (after configuring the Ninject kernel), you can use the following code:

IKernel ninject = ...; 

var locator = new NinjectServiceLocator(ninject);

ServiceLocator.SetLocatorProvider(() => locator);

Please note that the Common Service Locator (CSL) is a library that provides an abstraction over IoC containers and contains a static facade (implementing the Service Locator pattern). It is a common interface that developers can use to prevent depending on a specific IoC implementation. The CSL is especially useful for framework developers. Application developers are better of using the dependency injection (DI) pattern. When DI is used correctly, there is no need for the use of the CSL in an application. While the CSL is more suited for framework development, even there I find the use of the CSL questionable. In believe that most of the time the use of such common interface can be removed by having a proper design.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文