首页 新闻 会员 周边 捐助

MVC小问题,哪位大神给我开导一下

0
悬赏园豆:30 [已解决问题] 解决于 2017-04-14 16:20

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));

名字什么都是浮云的主页 名字什么都是浮云 | 菜鸟二级 | 园豆:327
提问于:2017-03-13 17:15
< >
分享
最佳答案
1

利用Autofac进行依赖注入

收获园豆:30
Jeffcky | 老鸟四级 |园豆:2789 | 2017-03-13 17:27

ContainerBuilder这个是什么,貌似百度上没有详细解释,大哥能说下吗

名字什么都是浮云 | 园豆:327 (菜鸟二级) | 2017-03-13 18:01

@放飞吧,梦想!: 这个相当于容器、工厂。实现类依赖接口,你把接口和实现类放进去,它就会自动生产出来一个对象。这个适合于project中存在大量的依赖关系,AutoFactory这种中间件会动态加载,是解耦神器。

~扎克伯格 | 园豆:1923 (小虾三级) | 2017-03-14 09:09

@~扎克伯格: 嗯,大神已经说的很清楚了,只是我还想深入了解下builder.RegisterGeneric(typeof(BaseRepository<>)).As(typeof(IRepository<>));这句话什么意思,as以及RegisterGeneric

名字什么都是浮云 | 园豆:327 (菜鸟二级) | 2017-03-14 10:55

@放飞吧,梦想!: 

//注册数据库基础操作和工作单元
builder.RegisterGeneric(typeof(BaseRepository<>)).As(typeof(IRepository<>));
builder.RegisterType(typeof (UnitWork)).As(typeof (IUnitWork));

你不是贴上注释了吗? 注册数据库基础操作。

~扎克伯格 | 园豆:1923 (小虾三级) | 2017-03-14 11:01

@~扎克伯格: 那RegisterGeneric方法以及

_container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(_container));

什么意思呀,类的含义

名字什么都是浮云 | 园豆:327 (菜鸟二级) | 2017-03-14 13:28

@放飞吧,梦想!: 

// Set the dependency resolver to be Autofac.
_container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(_container));

注释不写了吗?Autofac设置依赖项解析器。

这些都是都是在global中固定配置,在application启动时就初始化了。你只要会用就行,比如AutoFac它是怎么实现自动生产出objec的,没必要研究那么深。

~扎克伯格 | 园豆:1923 (小虾三级) | 2017-03-14 13:59

@~扎克伯格:我需要的是这个 http://blog.csdn.net/xingxing513234072/article/details/10117095

名字什么都是浮云 | 园豆:327 (菜鸟二级) | 2017-03-16 09:20

@放飞吧,梦想!: 嗯嗯

~扎克伯格 | 园豆:1923 (小虾三级) | 2017-03-16 09:32
其他回答(1)
0

可以先去了解下C# 依赖注入和控制反转,  这和MVC没关系的。

~扎克伯格 | 园豆:1923 (小虾三级) | 2017-03-13 17:31

那就是说C#也能用这个了是吗

支持(0) 反对(0) 名字什么都是浮云 | 园豆:327 (菜鸟二级) | 2017-03-13 18:02

@放飞吧,梦想!: 这属于设计模式,你可以先看看基础—单例模式

http://www.cnblogs.com/fuchongjundream/p/3873073.html

支持(0) 反对(0) ~扎克伯格 | 园豆:1923 (小虾三级) | 2017-03-14 09:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册