所以我在我的应用程序中使用 Autofac,看起来如下(从上到下的方法)。
该项目在 MVC 4 中,我添加了 AutoFac.MVC4 测试版。
- Web App Client(Web 应用程序 - 表示层):namespace = AppBase.Web
- Web App Core(例如各种 actionresults,...):namespace = AppBase.Web.Core
- 服务(例如 AuthenticationService、MemberService、TaskService):命名空间 = AppBase.Service
- 数据(包括存储库,...):命名空间 = AppBase.Data
- 域(Code Fist 的 POCO 对象):命名空间 = AppBase.Domain
我将 Autofac 包含在我的 Web App Client 中,并带有以下初始化代码(目前):
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 行添加存储库和服务,所以这是我不再想要的东西)。