我继承了数百个这样的声明:
mockKernel.Setup(x => x.Bind<IAddressService>().To<AddressService>())
.Returns(new BindingConfigurationBuilder<AddressService>(bindingConfiguration, "ServiceName", mockKernel.Object));
...作为数百个类似以下语句的测试的一部分:
_kernel.Bind<IAddressService>().To<AddressService>().InRequestScope();
我想写这样的东西:
private void SetupBindAtoB<TInterface, TImplementation>(TInterface a, TImplementation b)
where TImplementation : TInterface
{
mockKernel.Setup(x => x.Bind<TInterface>().To<TImplementation>())
.Returns(new BindingConfigurationBuilder<TImplementation>(bindingConfiguration, "ServiceName", mockKernel.Object));
}
...然后这样调用它:
SetupBindAtoB(IAddressService, AddressService);
但我不能。我必须将一个真实的对象传递给 SetupBindAtoB
,如下所示:
SetupBindAtoB((IAddressService) null, (AddressService) null);
是否可以避免创建传递给 SetupBindAtoB
的真实对象?
最佳答案
你试过这个吗?
private void SetupBindAtoB<TInterface, TImplementation>()
where TImplementation : TInterface
{
mockKernel.Setup(x => x.Bind<TInterface>().To<TImplementation>())
.Returns(new BindingConfigurationBuilder<TImplementation>(bindingConfiguration, "ServiceName", mockKernel.Object));
}
使用
SetupBindAtoB<IAddressService,AddressService>();
关于c# - 将非实例化的类和接口(interface)传递给泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50164631/