DIコンテナを使用して動作の切り替えをしようとしています。
図としては以下のようなイメージで、Mainプロジェクトのビルド時にはA.dllとB.dllのどちらを使用するか未確定のためアセンブリがロードされていないときに、DIコンテナの設定変更等でIBaseインターフェイスを実装するクラスがどれになるのか指定できるようにしたいです。
もちろん、注入候補となるクラスはBase.DLLのIBaseを実装していればいいので、DLLの候補は無数にあります。
前提として、Main.exe実行中にIBaseの実体が変更されることはありません。
ここで、以下質問があります。
- 参照していないアセンブリを自動でロードする機能のあるDIコンテナってありますでしょうか?
単純に、「アセンブリのDLLのパス」「そのDLLに含まれる、インジェクションする実体の型名(FullName)」「解決したいインターフェース名」が設定できれば十分だと思っているのですが、軽く調べただけだと見つかりませんでした。
- そもそもDIコンテナの使い方が合っていますか?
よくあるDIコンテナの実装例を見ると、(チュートリアルだからだと思いますが)ほとんどが同一プロジェクトや同一ファイル内のものを注入する例になっています。
図の例だと、普通はMainプロジェクトで注入される候補となるライブラリを静的参照したうえで設定ファイル変更により切り替えるんでしょうか?
それとも、注入するクラス名およびDLLファイル名をA・Bの2プロジェクトで同一にしておくのが正しいやり方なんでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/20 02:04