だから私は次のように見えるアプリケーションでAutofacを使用しています(トップダウンアプローチから)。
プロジェクトは MVC 4 にあり、AutoFac.MVC4 ベータ版を追加しました。
- Web アプリ クライアント (Web アプリケーション - プレゼンテーション層): 名前空間 = AppBase.Web
- Web App Core (例: さまざまなアクション結果など): 名前空間 = AppBase.Web.Core
- サービス (例: AuthenticationService、MemberService、TaskService): 名前空間 = AppBase.Service
- データ (リポジトリなどを含む): 名前空間 = AppBase.Data
- ドメイン (Code Fist の POCO オブジェクト): 名前空間 = AppBase.Domain
次の初期化コードを使用して、Web アプリ クライアントに Autofac を含めました (今のところ)。
public void RegisterContainersUsingAutofac()
{
var builder = new ContainerBuilder();
builder.RegisterModelBinders(Assembly.GetExecutingAssembly());
builder.RegisterModelBinderProvider();
builder.RegisterControllers(typeof(MvcApplication).Assembly);
IContainer container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}
Web App Client は、コア、ドメイン、およびサービス レイヤーを参照します。サービス レイヤーは、データ レイヤー (リポジトリ用) を参照します。
データ層に iRepository というインターフェイスがあり、すべてのリポジトリがこれらを実装しています
すべてのリポジトリとサービスを自動的に (一般的な方法で) 追加するには、「RegisterContainersUsingAutofac」メソッドにどのコードを追加すればよいのでしょうか。データレイヤーは参照されていないことに注意してください(参照できますが、そうすべきではないと思います)。
PS。以前は Unity を使用していましたが、AutoFac の一般的な方法が気に入っています (あるプロジェクトでは、リポジトリとサービスを追加するために +/-180 行以上あるため、これはもう必要ありません)。