私はDIとIoCから始めているので、私の質問は最適に定義されていない可能性があります.
私は多くの例を読んだだけでなく 、@MarkSeemann の.NET での Dependency Injectionという本を読んでいます。
しかし、私はおそらくいくつかのポイントを逃しました。質問を明確にするための特別なフレームワークの例はありません。
質問1:
たとえば、私はWinFormsアプリケーションを持っています
Gui1 --> (config からサービス IP を取得し、bl に渡します)
Gui2 --> (ユーザーからサービス IP を取得し、bl に渡します)
--> ビジネス層 --> 通信 DALayer (サービス IP アドレスを受信) --> ... --> WCF サービス ...
各コンポーネント - 個別の .Net プロジェクト (GUI1、GUI2、BL、DAL など) です。
任意の DI コンテナー (Unity、Castle など) を使用したい。
この場合、アプリケーションの起動時にコンテナーを 1 回だけ初期化する必要があります。これは、 GUI1ファイルprogram.csとGUI2ファイルprogram.csから行うことを意味します。
しかし、BL と DALの両方の参照をGUI1 と GUI2 プロジェクトに追加する必要があるということですか? つまり、BL インスタンスを登録できるようにするには、その型をコンテナーに提供する必要があります。これを行うには、program.cs からその型を「見る」ことができるはずです。
DAL の場合も同じです。BL で IoC コンテナーから dal を取得する必要があります (コンストラクター インジェクション?)。
BL 参照を GUI に追加することは問題ありませんが、DAL 参照 (および場合によっては他のヘルパーなど) を GUI プロジェクトに追加することは問題です。
Windsor のインストーラーについて読みましたが、これは同じ問題です。DAL 用のインストーラー、BL 用のインストーラーを準備できます。
「MyNamespace.MyClass」のように、タイプを文字列として指定できることはわかりませんが、それは最善の解決策ではないと思います。
ここで何が欠けていますか?
ありがとう!