随笔分类 - Ioc
摘要: 简单来说,所谓注册组件,就是注册类并映射为接口,然后根据接口获取对应类,Autofac将被注册的类称为组件。 虽然可像上篇提到的一次性注册程序集中所有类,但AutoFac使用最多的还是单个注册。这种注册共有三种方式,其中最简单的就是用As方法,例如,ArrayList继承了IEnumerable接口,若将其注册到Autofac中,写法如下所示: ContainerBuilder b...阅读全文
posted @ 2012-12-12 03:03 许两会 阅读(4640) | 评论 (13) 编辑
Ioc容器Autofac系列(2)-- asp.net mvc中整合autofac
摘要: 经过上篇蜻蜓点水的介绍后,本篇通过实例快速上手autofac,展示当asp.net mvc引入了autofac之后会带来什么。 创建Asp.net MVC并引入Autofac 首先,创建一个MVC站点,为方便起见,选初始带HomeController和AccountController的那种。然后通过NuGet或到Autofac官网下载来引入类库。个人推荐前者,因为从VS2010开始,已内集可...阅读全文
posted @ 2012-11-28 13:54 许两会 阅读(9470) | 评论 (14) 编辑
摘要: 前言第一次接触Autofac是因为CMS系统--Orchard,后来在一个开源爬虫系统--NCrawler中也碰到过,随着深入了解,我越发觉得Ioc容器是Web开发中必不可少的利器。那么,Ioc容器是用来做什么的?用了有什么好处?我相信如果不明白这两点就很难敞开心扉接受Ioc容器。传统解耦设计的弊端为方便描述,举个日志的栗子。我简化实现,一个Log类,一个SaveLog方法。如果其他类想拥有记日志功能,那么只需在内部包含一个Log类型的变量:publicclassLog { publicvoid SaveLog(string message) { // save log here. } } .阅读全文
posted @ 2012-11-21 02:16 许两会 阅读(11506) | 评论 (24) 编辑
Nopcommerce中使用了一个单例类封装了autofac的注册
找到所有实现了IdependencyRegister接口的类, 然后反射得到实例, 进行动态注册
反射备忘
nop实现的Itypefinder可以找到实现某个接口的类 http://www.cnblogs.com/miku/archive/2012/09/24/2700776.html
var typesToRegister = Assembly.GetExecutingAssembly().GetTypes()
.Where(type => !String.IsNullOrEmpty(type.Namespace))
.Where(type => type.BaseType != null && type.BaseType.IsGenericType && type.BaseType.GetGenericTypeDefinition() == typeof(EntityTypeConfiguration<>));
foreach (var type in typesToRegister)
{
dynamic configurationInstance = Activator.CreateInstance(type);
modelBuilder.Configurations.Add(configurationInstance);
};
找到实现了某个类的子类类型合集,