【问题标题】:What is the equivalent of Container.GetAllInstances<T> in NInject?NInject 中 Container.GetAllInstances<T> 的等价物是什么?
【发布时间】:2010-11-26 13:16:03
【问题描述】:

我正在使用 NInject 构建一个消息代理,我需要在容器中找到所有实现 Consumes 的实例,该接口将类标记为能够使用特定的消息类型。

是否支持这种情况?

【问题讨论】:

    标签: dependency-injection ioc-container ninject


    【解决方案1】:

    内特的回答:

    多分辨率(通过GetAll)是 目前不是多态的。这意味着 它只会考虑绑定 从您指定的确切界面。 如果你这样做:

    kernel.Bind<IWorker>().To<WorkerA>();
    kernel.Bind<IWorker>().To<WorkerB>();
    kernel.Bind<IWorker>().To<WorkerC>();
    

    然后:

    kernel.GetAll<IWorker>();
    

    它将返回 3 个项目。然而,即使 如果IWorkerA、IWorkerB 和 IWorkerC 实现 IWorker, Ninject 不会查看来自的绑定 IWorkerA 到 WorkerA 当你问 对于IWorker。

    见:

    http://groups.google.com/group/ninject/browse_thread/thread/7b6afa06099bc97a#

    【讨论】:

      【解决方案2】:

      如果您没有Romain's answer 引用的线程中讨论的多态情况,那么只要您使用 Ninject 2,您就不会有任何问题。Ninject 1.x 没有包括这种支持。

      【讨论】:

        猜你喜欢
        • 2015-04-27
        • 1970-01-01
        • 2014-05-08
        • 2014-06-12
        • 1970-01-01
        • 2022-11-28
        • 2023-03-04
        • 2021-06-19
        • 2012-07-20
        相关资源
        最近更新 更多