Dependency InjectionがAsp.netコアに組み込まれていることを知っているように、私は3層アーキテクチャとasp.netコアでソフトウェアを構築しています。
上記の図によると、データアクセス層とUI層の間にdirect接続がありません
私のプロジェクトは:
私の質問は、UIとDalの間に直接接続がない場合、DALをサービスとしてUIレイヤーに登録するにはどうすればよいですか?
アプリケーション(UIプロジェクト)のエントリポイントは、DIコンテナーをセットアップして、すべての依存関係の実装を提供する必要があります。そのため、他のすべてのプロジェクトに直接接続(参照)する必要があります。
重要なのは、UIクラスがBLLクラスにのみ依存していることです。追加のリファレンスは、DIのセットアップのみを目的としています。
最初のポイント-簡単にするために、ルーメンの答えは正しいです。
より大きなソリューションで私がしていることは、依存関係注入コンテナーをセットアップする別個のインフラストラクチャプロジェクトを作成することです(.netコアでは、これはIServiceCollectionです)。
たとえば、私の現在のソリューションでは、ウェブサイトとAPIの両方を持っています。これらの両方は、依存関係注入をセットアップするために、インフラストラクチャプロジェクトでメソッドを呼び出します。次に、UIプロジェクトで、コードを知らなくても、セットアップする依存関係を決定できます。例えば.
このアプローチには2つの利点があります。
余談ですが、これが他のDIフレームワークにどれだけうまく翻訳できるかはわかりません。私はそれらすべてが同様に依存関係を設定することを想像しますが、ネイティブ.netコア依存関係注入を使用して上記を実行しただけです。