Как мне объявить цепь ответственности с помощью декораторов в Ninject? - PullRequest
4 голосов
/ 19 марта 2009

Я бы хотел объявить цепь ответственности с использованием декораторов в Ninject.

Кто-нибудь делал это раньше?

Спасибо.

Ответы [ 2 ]

13 голосов
/ 24 ноября 2009

В новом синтаксисе ninject 2.0 вы можете выполнить это с помощью следующего более нового синтаксиса:

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

Просто наткнулся на это сам и обнаружил, что это был способ сделать это, поскольку ForMembersOf был удален в ninject 2.0

2 голосов
/ 25 апреля 2009

Если я правильно понимаю вопрос, один из подходов выглядит примерно так:

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

Класс LoggingEmailSender будет иметь конструктор наподобие:

LoggingEmailSending(IEmailSender sender)

Это должно достаточно легко сделать вас декоратором - просто помните, что без использования атрибутов вы ограничены одним конструктором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...