各テナントに異なるSMSプロバイダがあるとします(各テナントには、それぞれのプロバイダがSMSを送信する独自のSMSプロバイダを持っています)。ASPNetBoilerplateでこの状況をどうやって実装できますか?どのようにSMSアクションをインターフェイスに変換しますか?
-1
A
答えて
0
各テナントに1つのSMSプロバイダしかない場合は、テナントクラスで複合型を作成できます。各テナントに複数のSMSプロバイダがある場合は、TenantSmsProviderエンティティを作成します。
DLLを作成する理由を理解できませんでした。
0
あなたは依存性注入を求めていると思います。 テナントID(例:GetProviderByTenantId(int tenantId
)でSMSプロバイダ(例:ISmsProvider
)を作成するファクトリ(たとえばISmsProviderFactory
)を作成する必要があります。これは一般的なソフトウェアパターンです。次に、ISmsProviderFactory
を注入し、必要に応じてテナントに基づいてISmsProviderFactory
を得ることができます。
カスタムファクトリクラスを作成する代わりに、Castle WindsorのAPIを使用して、依存関係を工場で登録することができます。したがって、コードにISmsProvider
を直接注入することができます。
今、問題はSmsProviderFactory
を実装する方法ですか?要件に応じて異なるアプローチがあります。しかし、この部分はABPの範囲外であり、ウェブ上で多くの記事を見つけることができます。
あなたがABPのプラグインシステムを利用したいのであれば、少し違うように設計することができます:すべてのプラグインDLLはISmsProvider
をディクショナリ(辞書のキーがテナントID /名前です)工場は指定されたテナントに対して登録済みのプロバイダを選ぶことができます。
関連する問題
- 1. ジェネリックメソッドを使用したインターフェイスのインスタンスをアクションに変換する
- 2. どのようにドキュメントをプレビューイメージに変換しますか?
- 3. xcodeプロジェクトをどのようにココアポッドに変換しますか?
- 4. JPanelをどのようにファイルに変換しますか?
- 5. どのようにcharをXElementに変換しますか?
- 6. どのようにttfフォントをpff2に変換しますか?
- 7. どのように辞書をリストに変換しますか?
- 8. Android - どのようにhtmlをpdfに変換しますか?
- 9. どのようにLPCWSTRをconst char *に変換しますか?
- 10. どのようにバイナリファイルをバイトに変換しますか?
- 11. どのように.h5ファイルを.csvに変換しますか?
- 12. どのようにC#オブジェクトをExpandoObjectに変換しますか?
- 13. タブバーアイテムをアクションにどのように接続しますか?
- 14. どのようにIEnumeratorインターフェイスを実装しますか?
- 15. ルビーでどのようにインターフェイスを作成しますか?
- 16. どのようにREST APIインターフェイスをシミュレートしますか?
- 17. apkpureはどのようにiPhoneアプリを変換しますか?
- 18. PSVirtualMachineObjectsをどのように変換しますか?
- 19. table-exampleをどのように変換しますか?
- 20. papervision3dはどのようにテクスチャを変換しますか?
- 21. - > Floatをどのように変換しますか?
- 22. C#インターフェイスに変換
- 23. React-nativeのReadableMapインターフェイスはJSをJAVAに変換しますか?
- 24. このJSON datetimeはどのように変換しますか?
- 25. 可変配列のスプライトをどのようにオブジェクトに変換しますか?
- 26. RSpecでこのアクションをどのようにテストしますか?
- 27. どのように変換
- 28. どのようにConcurrentDictionaryをDictionaryに変換できますか?
- 29. 'System.Windows.Forms.Keys'に 'System.Windows.Input.Key'をどのように変換できますか?
- 30. gradle - どのようにインターフェイスorg.gradle.api.Actionは動作しますか?
テナントごとに固有のインターフェイスを持つ1つのDLLを作成し、関連するデータベースに格納する必要があると思います。しかし、ASPNetBoilerplateテンプレートにこのDLLをロードして注入する場所はどこですか? –