一、组件的创建
组件的创建有如下4种(延续第一篇的Demo,仅仅变动所贴出的代码)方式:
1、类型创建RegisterType
AutoFac能够通过反射检查一个类型,选择一个合适的构造函数,创造这个对象的实例。主要通过RegisterType<T>() 和 RegisterType(Type) 两个方法以这种方式建立。
ContainerBuilder使用 As() 方法将Component封装成了服务使用。
builder.RegisterType<AutoFacManager>(); builder.RegisterType<Worker>().As<IPerson>();
2、实例创建
builder.RegisterInstance<AutoFacManager>(new AutoFacManager(new Worker()));
3、Lambda表达式创建
Lambda的方式也是Autofac通过反射的方式实现
builder.Register(c => new AutoFacManager(c.Resolve<IPerson>())); builder.RegisterType<Worker>().As<IPerson>();
4、程序集创建
builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly()); //在当前正在运行的程序集中找 builder.RegisterType<Worker>().As<IPerson>();
Lambda表达式 : builder.Register(c=>new
TaskController(c.Resolve<ITaskRepository>()));
一个类型 :
builder.RegisterType<TaskController>();
一个预编译的 :
builder.RegisterInstance(new TaskController());
包含实例类型的程序集 :
builder.RegisterAssemblyTypes(controllerAssembly);
Autofac components组件 《第二篇》,布布扣,bubuko.com
原文:http://www.cnblogs.com/kissdodog/p/3611799.html