0
我想要做上下文绑定但不能将具体实现接口绑定为构造函数参数。 Ninject版本:3.2.0.0使用构造函数参数将接口绑定到多个具体实现
我的结构如下:
INotifier 1. XNotifier 2. YNotifier
IPublisher 1. APublisher 2. BPublisher
其中作为XNotifier而YNotifier需要IPublisher类型的构造函数参数。
这里是结合我:
Bind<INotifier>()
.To<XNotifier>()
.When(x => notifictionControl.ToLower() == "xnotification")
.WithConstructorArgument("Publisher",ctx=>Kernel.Get<IPublisher>());
Bind<INotifier>()
.To<YNotifier>()
.When(x => notifictionControl.ToLower() == "ynotification")
.WithConstructorArgument("Publisher", ctx => Kernel.Get<IPublisher>());
用法:
IParameter parameter = new ConstructorArgument("Publisher", publisher);
var notifier = kernel.Get<INotifier>(parameter);
但是,得到以下错误:
错误激活INotifier 没有匹配的绑定是可用的,并且类型不可自行绑定。
为什么你传递参数到'获取'? –
MaKCbIMKo
@MaKCbIMKo:实现INotifier的类的构造函数期望IPublisher的具体实现。 – AnandSonake
但是您已经在绑定中指定了构造函数参数。你为什么再做一次? – MaKCbIMKo