2009-03-18 19 views
4

Je voudrais déclarer une chaîne de responsabilité en utilisant des décorateurs dans Ninject.Comment déclarer une chaîne de responsabilité en utilisant des décorateurs dans Ninject?

Est-ce que quelqu'un l'a déjà fait?

Merci.

+1

Je voudrais juste souligner que la chaîne de responsabilité et les décorateurs sont des modèles de conception entièrement différents, peut-être c'est pourquoi vous avez des difficultés à obtenir des réponses à cette question? –

Répondre

13

Dans la nouvelle syntaxe ninject 2.0 vous pouvez accomplir cela par la syntaxe suivante nouvelle:

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

Je viens de croiser moi-même et a constaté que était la façon de le faire comme ForMembersOf a été supprimée dans ninject 2.0

2

En supposant que je comprends bien la question, une approche est quelque chose comme ceci:

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

La classe LoggingEmailSender aurait un constructeur quelque chose comme:

LoggingEmailSending(IEmailSender sender) 

Cela devrait vous obtenir un décorateur assez facilement - rappelez-vous simplement que sans utiliser d'attributs, vous êtes limité à un seul constructeur.