var builder = new ContainerBuilder();
//注册数据库基础操作和工作单元
builder.RegisterGeneric(typeof(BaseRepository<>)).As(typeof(IRepository<>));
builder.RegisterType(typeof (UnitWork)).As(typeof (IUnitWork));
//注册WebConfig中的配置
builder.RegisterModule(new ConfigurationSettingsReader("autofac"));
//注册app层
builder.RegisterAssemblyTypes(Assembly.GetAssembly(typeof (UserManagerApp)));
//注册领域服务
builder.RegisterAssemblyTypes(Assembly.GetAssembly(typeof(AuthoriseService)))
.Where(u =>u.Namespace== "OpenAuth.Domain.Service");
// Register your MVC controllers.
builder.RegisterControllers(typeof(MvcApplication).Assembly);
// OPTIONAL: Register model binders that require DI.
builder.RegisterModelBinders(Assembly.GetExecutingAssembly());
builder.RegisterModelBinderProvider();
// OPTIONAL: Register web abstractions like HttpContextBase.
builder.RegisterModule<AutofacWebTypesModule>();
// OPTIONAL: Enable property injection in view pages.
builder.RegisterSource(new ViewRegistrationSource());
// OPTIONAL: Enable property injection into action filters.
builder.RegisterFilterProvider();
// Set the dependency resolver to be Autofac.
_container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(_container));
利用Autofac进行依赖注入
ContainerBuilder这个是什么,貌似百度上没有详细解释,大哥能说下吗
@放飞吧,梦想!: 这个相当于容器、工厂。实现类依赖接口,你把接口和实现类放进去,它就会自动生产出来一个对象。这个适合于project中存在大量的依赖关系,AutoFactory这种中间件会动态加载,是解耦神器。
@~扎克伯格: 嗯,大神已经说的很清楚了,只是我还想深入了解下builder.RegisterGeneric(typeof(BaseRepository<>)).As(typeof(IRepository<>));这句话什么意思,as以及RegisterGeneric
@放飞吧,梦想!:
//注册数据库基础操作和工作单元 builder.RegisterGeneric(typeof(BaseRepository<>)).As(typeof(IRepository<>)); builder.RegisterType(typeof (UnitWork)).As(typeof (IUnitWork));
你不是贴上注释了吗? 注册数据库基础操作。
@~扎克伯格: 那RegisterGeneric方法以及
_container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(_container));
什么意思呀,类的含义
@放飞吧,梦想!:
// Set the dependency resolver to be Autofac. _container = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(_container));
注释不写了吗?Autofac设置依赖项解析器。
这些都是都是在global中固定配置,在application启动时就初始化了。你只要会用就行,比如AutoFac它是怎么实现自动生产出objec的,没必要研究那么深。
@~扎克伯格:我需要的是这个 http://blog.csdn.net/xingxing513234072/article/details/10117095
@放飞吧,梦想!: 嗯嗯
可以先去了解下C# 依赖注入和控制反转, 这和MVC没关系的。
那就是说C#也能用这个了是吗
@放飞吧,梦想!: 这属于设计模式,你可以先看看基础—单例模式