デフォルトの実装をデフォルトのコンストラクターにハードコーディングするよりも、IOCコンテナーを使用することの利点を誰かが説明できますか?
言い換えれば、このコードの何が問題になっていますか?
public class MyClass
{
private IMyInterface _myInterface;
public MyClass()
{
_myInterface = new DefaultMyInterface();
}
public MyClass(IMyInterface myInterface)
{
_myInterface = myInterface;
}
}
私の知る限り、このクラスはコンストラクターインジェクションを十分にサポートしているため、単体テストとモックを簡単に実行できます。それに加えて、デフォルトのコンストラクターはIOCコンテナーの計算オーバーヘッドを取り除きます(プロセス全体がはるかに透過的であることは言うまでもありません)。
IOCコンテナを使用することで私が見ることができる唯一の利点は、インターフェイスの実装を頻繁に切り替える必要がある場合です。私は何かが足りないのですか?