【问题标题】:How do I use Common Service Locator in Ninject 2如何在 Ninject 2 中使用公共服务定位器
【发布时间】:2010-09-20 10:43:05
【问题描述】:

Changes in Ninject 2Ninject 支持Common Service Locator,但是我该怎么用呢?我没有找到任何手册或示例。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • CommonServiceLocator 是做什么的?
    猜你喜欢
    • 2012-03-10
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 2020-09-26
    • 1970-01-01
    • 2011-03-24
    • 1970-01-01
    相关资源
    最近更新 更多