4

我想在 Ninject 中使用装饰器声明一个责任链。

有没有人这样做过?

谢谢。

4

2 回答 2

13

在新的 ninject 2.0 语法中,您可以通过以下较新的语法来完成此操作:

Bind<IEmailSender>().To<LoggingEmailSender>();
Bind<IEmailSender>().To<SmtpClientEmailSender>().WhenInjectedInto<LoggingEmailSender>();

我自己遇到了这个问题,发现这是这样做的方法,因为 ForMembersOf 已在 ninject 2.0 中删除

于 2009-11-24T19:23:20.280 回答
2

假设我正确理解了这个问题,一种方法是这样的:

Bind<IEmailSender>().To<LoggingEmailSender>();
Bind<IEmailSender>().To<SmtpClientEmailSender>().ForMembersOf<LoggingEmailSender>();

LoggingEmailSender 类将有一个类似的构造函数:

LoggingEmailSending(IEmailSender sender)

这应该很容易让你成为一个装饰器——只要记住,如果不使用属性,你就会被限制在一个构造函数中。

于 2009-04-25T15:52:21.573 回答