実行時データに基づいて特定のサービスクラスを使用する必要があるワークフローがあります。SimpleInjectorを使用した戦略パターン
たとえば、私はの依存性を持つSendEmailCommand
を持っており、2つの実装はMandrillEmailService
とSmtpEmailService
です。
SendEmailCommand
は、実行時に使用するIEmailService
の実装を決定します。
各電子メールサービスの実装には、それぞれ独自の依存関係があります。これらは、SimpleInjectorによって配線されています。
SendEmailCommand
がどのような実装(IEmailService
)を使用するか、実行時データでそれらのサービスを結ぶ方法を決定する方法がわかりません。
いくつかのコード:
SendEmailCommand.csハンドラ
public void Handle(SendEmail command) {
IEmailService service;
if(/* some condition */) {
service = // What to do here?
} else {
service = // What to do here?
}
}
サービスは、私は推測している戦略に置換することができます。