如果我有以下内容:

public MyClass(IServiceOne serviceOne, IServiceTwo serviceTwo, IServiceThree serviceThree = null)
{
  this.serviceOne = serviceOne;
  this.serviceTwo = serviceTwo;
  this.serviceThree = serviceThree ?? new ServiceThree("some-info");
}


如何告诉Ninject绑定前两个参数,而不绑定IServiceThree类型的参数?这有可能吗?

我之所以需要serviceThree作为构造函数参数是出于可测试性-我需要能够从测试中注入一个模拟。

最佳答案

如果您不打算使用构造函数注入,那么您最好将其从构造函数参数列表中删除,并以手动方式对其进行初始化。换句话说,只需传递两个参数,而不是三个。

更新:您可以做的是注入null值。据我记得,您将必须执行以下操作:

_kernel.Settings.AllowNullInjection = true;


然后,您可以删除第三个参数的绑定(如果存在)。

09-17 23:14