0

私は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.csGUI2ファイルprogram.csから行うことを意味します。

しかし、BL と DALの両方の参照をGUI1 と GUI2 プロジェクトに追加する必要があるということですか? つまり、BL インスタンスを登録できるようにするには、その型をコンテナーに提供する必要があります。これを行うには、program.cs からその型を「見る」ことができるはずです。

DAL の場合も同じです。BL で IoC コンテナーから dal を取得する必要があります (コンストラクター インジェクション?)。

BL 参照を GUI に追加することは問題ありませんが、DAL 参照 (および場合によっては他のヘルパーなど) を GUI プロジェクトに追加することは問題です。

Windsor のインストーラーについて読みましたが、これは同じ問題です。DAL 用のインストーラー、BL 用のインストーラーを準備できます。

「MyNamespace.MyClass」のように、タイプを文字列として指定できることはわかりませんが、それは最善の解決策ではないと思います。

ここで何が欠けていますか?

ありがとう!

4

0 に答える 0