Ninject構造函數參數我有一個簡單的類我使用的處理通知。的多個綁定
public class ApplePushNotifier : IApplePushNotifier
{
public ApplePushNotifier(
ILog log,
IMessageRepository messageRepository,
IUserRepository userRepository,
CloudStorageAccount account,
string certPath)
{
// yadda
}
// yadda
}
和簡單Ninject結合,其中包括字符串參數查找本地證書文件:
kernel.Bind<IApplePushNotifier>().To<ApplePushNotifier>()
.WithConstructorArgument("certPath",
System.Web.Hosting.HostingEnvironment.MapPath("~/bin/apns_universal.p12"));
這顯然是非常基本的,並且一切都很好工作。現在,我已經添加了第二個界面的那類:
public class ApplePushNotifier : IApplePushNotifier, IMessageProcessor
我可以添加這樣的第二結合:
kernel.Bind<IMessageProcessor>().To<ApplePushNotifier>()
.WithConstructorArgument("certPath",
System.Web.Hosting.HostingEnvironment.MapPath("~/bin/apns_universal.p12"));
而這也工作,但複製構造函數的參數給我的蕁麻疹。我試圖添加一個明確的自我約束如下:
kernel.Bind<ApplePushNotifier>().To<ApplePushNotifier>()
.WithConstructorArgument("certPath",
System.Web.Hosting.HostingEnvironment.MapPath("~/bin/apns_universal.p12"));
kernel.Bind<IApplePushNotifier>().To<ApplePushNotifier>();
kernel.Bind<IMessageProcessor>().To<ApplePushNotifier>();
但沒有骰子 - 我得到舊的「沒有匹配的綁定可用」錯誤。
有沒有辦法指定一個構造函數的參數像這樣沒有,要麼推動到可綁定類型它自己的,或重複它是類實現的每個接口?
簡直太容易了!我知道必須有一個簡單的方法來處理這個問題,謝謝! – superstator