我想在 Ninject 中使用装饰器声明一个责任链。
有没有人这样做过?
谢谢。
在新的 ninject 2.0 语法中,您可以通过以下较新的语法来完成此操作:
Bind<IEmailSender>().To<LoggingEmailSender>();
Bind<IEmailSender>().To<SmtpClientEmailSender>().WhenInjectedInto<LoggingEmailSender>();
我自己遇到了这个问题,发现这是这样做的方法,因为 ForMembersOf 已在 ninject 2.0 中删除
假设我正确理解了这个问题,一种方法是这样的:
Bind<IEmailSender>().To<LoggingEmailSender>();
Bind<IEmailSender>().To<SmtpClientEmailSender>().ForMembersOf<LoggingEmailSender>();
LoggingEmailSender 类将有一个类似的构造函数:
LoggingEmailSending(IEmailSender sender)
这应该很容易让你成为一个装饰器——只要记住,如果不使用属性,你就会被限制在一个构造函数中。