如果我有以下内容:
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;
然后,您可以删除第三个参数的绑定(如果存在)。