1

MVC プロジェクトをセットアップしています。このように見えます

EfDbContext : IDbContext { ... }

MyStuff : IMyStuff { ... }

MyService : IMyService {
   List<things> GetSomething(IDbContext context, IMyStuff stuff) { ... }
}

MyController : Controller { 
   ActionResult MyAction(IMyService service) { ... }
}

StructureMap.MVC を使用して、すべてのコンストラクターの依存関係を解決し、カスタム ActionFilter での監査とログ記録のためのセッター インジェクションを行います。IoC で手動で指定する必要があるのは、IDbContext の接続文字列だけです。それ以外はすべて自動的に機能します。

いくつかの記事を読むまでは、クラスとインターフェイスの比率が 1:1 の匂いがします。私のアプリケーションは非常に単純です。IMyStuff または IMyService の実装が異なることはありません。私がそれらを持っている唯一の理由は、それらを注入して単体テストできるようにするためです (Rhino を使用しましたが、NSubstitue が好きになり始めました)。

インターフェイスを取り除き、具体的なクラスを直接注入する方法はありますか? だから、それは

GetSomething(IDbContext context, MyStuff stuff) {}
MyAction(MyService service) {}

もちろん、StructureMap を使用したすべての規則ベースの自動配線が必要なので、それらを 1 つずつ指定する必要はありません。

ありがとう。

4

0 に答える 0