首页 > 解决方案 > 扩展 Ninject Bind 方法

问题描述

Ninject 有这个方法

public IBindingToSyntax<T1, T2, T3, T4> Bind<T1, T2, T3, T4>()

是否有可能以某种方式扩展此方法以将 5 个接口绑定到一个实现?

像这样:

public IBindingToSyntax<T1, T2, T3, T4, T5> Bind<T1, T2, T3, T4, T5>()

标签: c#ninject

解决方案


Ninject 提供了一种流畅的语法,允许您将最多 4 个接口绑定到同一个实例:

Bind<IInterface1, IInterface2, IInterface3, IInterface4>().To<Implementation>();

如果我们需要更多接口,有一个解决方法:

var bindingConfiguration =
    Bind<IInterface1, IInterface2, IInterface3, IInterface4>()
        .To<Implementation>()
        .BindingConfiguration;
kernel.AddBinding(new Binding(typeof(IInterface5), bindingConfiguration));

下面我贴出作者的一句话,为什么只有四个接口?

有人可能会问,如果我想将四个以上的接口绑定到同一个服务,该怎么办。在一次小型讨论中,我们得出的结论是,如果您在单个服务上有四个以上的接口,那么您很可能会遇到单一责任原则的问题,应该首先解决这个问题。

链接到文章Ninject 3.0 的新功能和变化


推荐阅读