【问题标题】:Extend Ninject Bind method扩展 Ninject Bind 方法
【发布时间】:2018-11-16 04:03:18
【问题描述】:

Ninject 有this method

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>()

【问题讨论】:

  • 现在不工作了吗?您是否尝试过重载现有参数?
  • 不适用于五个接口。我需要将 5 个接口绑定到一种类型。就像在这个so answer

标签: c# ninject


【解决方案1】:

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));

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

有人可能会问,如果我想绑定四个以上的接口到 相同的服务。在一次小型讨论中,我们得出的结论是,如果 与大多数服务相比,您在单个服务上拥有四个以上的接口 您可能对单一责任原则有疑问,并且 应该首先解决这个问题。

链接到文章New Features and changes of Ninject 3.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多