私が持っている一つのインタフェースと、以下のように自分のアプリケーションで(そのインターフェイスから実装された)二つのクラス:依存性注入 - 値に基づいて依存関係を解決するにはどうすればいいですか?
public interface ISMSServiceProvider
{
NotificationSentResponse Send(SMSMessage sms);
}
public class NexmoProvider: ISMSServiceProvider
{
NotificationSentResponse Send(SMSMessage sms);
}
public class TwilioProvider: ISMSServiceProvider
{
NotificationSentResponse Send(SMSMessage sms);
}
私はNexmoProviderを使用する必要が自分のアプリケーションでいくつかの場所で
、およびいくつかの場所TwilioProviderで。それは、次の列挙型の変数の値に基づいて決定されています:
public enum NotificationProvider
{
Twilio = 1,
Nexmo = 2
}
私は自分のアプリケーションにサービス・スタックを使用して、依存関係を解決するために、次のコードが午前:
container.RegisterAutoWiredAs<TwilioProvider, ISMSServiceProvider>();
しかし、することができますようにISMSServiceProviderには2つの異なる型を同時に登録することはできません。
実行時にNexmoまたはTwilioのいずれかのプロバイダクラスを使用するために、以下の構造でどのような変更が必要なのでしょうか?
あなたのお返事ありがとうございますmythz ...私は、このシナリオではFactoryソリューションがより賢明に見えると思います。 "HostConfig"を取得するために私がインストールする必要があるパッケージがどれだけあるのだろうか?私はServiceStackを使用しています。3.9.48 – Nirman
@Nirman ServiceStackの最新のv4を参照している 'servicestack'ハッシュタグを使用するときは、[servicestack-bsdタグを使用する必要があります](https://github.com/ servicestackv3/servicestackv3#support)を使用してServiceStack v3を参照します。あなたは 'AppHostBase.Instance.Resolve'などを使うことができるはずですが、覚えていないはずです。 –
mythz
ありがとう、その "AppHostBase.Resolve"はv3で動作します。適切な実装で私を助けることにあなたの助けを感謝します。ありがとうございました – Nirman