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

私が質問を正しく理解していると仮定すると、1つのアプローチは次のようなものです。

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

LoggingEmailSenderクラスには、次のようなコンストラクターがあります。

LoggingEmailSending(IEmailSender sender)

これにより、デコレータを簡単に取得できるはずです。属性を使用しないと、コンストラクタが1つに制限されることを覚えておいてください。

于 2009-04-25T15:52:21.573 に答える