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