私は数日間、依存性注入/制御の反転について読んでいて、概念を理解するのに苦労しています。
私が次の些細なシナリオを持っていると仮定しましょう:
public interface ILocation
{
string LocationName { get; set; }
}
// The implementation / concrete class for ILocation
public class Location : ILocation
{
public string LocationName {
get { /* logic */ }
set { /* logic */ }
}
}
// My class that depends on ILocation as a dependency
public class SomeClass{
public SomeClass(ILocation location)
{
this.theLocation = location;
}
//
// more code...
//
}
すばらしいので、ILocation
注入されましたSomeClass
...しかし、依存性注入フレームワークIN CODE内ILocation
で処理されるように接続しLocation
、コンパイルする必要がありました。(余談ですが、ファイルでこの構成を行うフレームワーク、つまりXML構成ファイルがあることを認識しています)
上記のすべてのコンポーネントがコンパイル時に存在する必要がある場合に、この知識の「分離」を作成することのポイントは何ですか?
これは本当に私を悩ませています。おそらく私は完全に要点を逃しました。そうは言っても、多くの人が「テスト容易性」について話しているのを目にし、そこでの利点を見ることができますが、テストを窓の外に投げ出していると仮定しましょう。他にどのような利点がありますか?これは本当に私に何を与えていますか?
私はもともと、自分が構築しているアプリケーションの「プラグイン」パターンを設計するための良い方法を見つけることができることを期待して、この概念をさらに学ぶために探しました。これまでのところ、これはランタイムプラグインの概念では機能しないように見えます。
このテーマに関する洞察を楽しみにしています-ありがとうございます!