IoC の基本的な概念は理解できますが、最初の概念を超えて視野を広げるのに苦労しています。
基本的に、DI フレームワークを使用する場合、依存関係のあるオブジェクトに new キーワードを使用しないでください。これは、DI フレームワークの解決メソッドを呼び出さないため、解決のチェーンをトリガーしないためです。
ユーザーが必要とするオブジェクト A を必要とするオブジェクト B を必要とするオブジェクト C を必要とするオブジェクト ...
DI フレームワークを使用すると、それが起こります。しかし、 new キーワードを使用すると、次のようになります。
オブジェクト A をインスタンス化するだけです
質問 1: 私は正しいですか? 違う ?それとも「場合による」ということですか?
Mark Seemann ( https://stackoverflow.com/a/2490797/2671072 ) の回答を読んだところ、彼は次のように述べています。
DI コンテナーは、アプリケーションのコンポジション ルート内の依存関係グラフ全体を解決し、邪魔にならないようにする必要があります。
質問 2 : 彼は、DI フレームワークを (何かを解決するために) 呼び出す必要があるのは、アプリケーションの開始時だけであり、そこからは何も問題なく、そのままにしておかなければならないことを暗示しているのでしょうか?
私はプロジェクトに取り組んでいます。しかし、インターフェイスとクラス (エンティティ、値オブジェクト、実装) がどこに行くべきか (アセンブリ、名前空間の命名など) を定義するのに苦労しています。
質問 3: DI は、コード編成のための特別な構造を暗示していますか?
ドメイン/ビジネス レイヤーは DI フレームワークを参照すべきではないと聞きました。
質問 4: その推奨事項は他のレイヤーにも適用されますか? それとも偽ですか?
私は 2 つのライブラリ (LibraryA と LibraryB など) を使用しています。LibraryB には、ClassA、ClassB、ClassC の 3 つのクラスが含まれています。各クラスは前のものに依存します (ClassA はルート/集合体です)。LibraryA は ClassA に依存します。
質問 5 : ライブラリ B 内にファクトリを作成し、ClassA とその依存関係 (new キーワードのみを使用) を作成することに専念する方が良いですか、それとも DI フレームワークをフルに活用して、手動で ClassA、ClassB、ClassC を登録する方が良いでしょうか? ClassA を解決しますか?