私がWebで見たほとんどのサンプルでは、MVCコントローラーのDIは次のように実行されます
public ProductController(IProductRepository Rep)
{
this._rep = Rep;
}
カスタムControllerFactoryが使用され、選択したDIフレームワークを利用して、リポジトリが挿入されます。
上記がより良いと考えられるのはなぜですか
public ProuctController()
{
this._rep = ObjectFactory.GetInstance<IProductRepository>();
}
これでも同じ結果が得られますが、カスタムコントローラーファクトリは必要ありません。
テストに関する限り、テストアプリは個別のBootStrapperを持つことができます。そうすれば、コントローラーがテストされているときに偽のリポジトリーを取得でき、実際に使用されているときに本物のリポジトリーを取得できます。