Autofac基本使用
名词解释:
组件(Components):容器中的基本单元,凡是注册到容器中的都叫组件(包含暴漏的服务类型、生命周期域、绑定的具象对象等等基本信息)
服务(Services)::类似于组件的暴露类型,As方法后面中的对象类型,可以有多个
生命周期作用域(LifeTimeScope):
-
生命周期:服务实例在应用程序中存在的时间长度,从开始实例化到最后释放
-
作用域:服务在应用程序中可以消费的地方
-
生命周期作用域:上面的两个概念,应用中的一个工作单元
注册组件的几个方法
1、反射注册:直接指定注入的对象和暴露类型,使用RegisterType<T>
或者RegisterType(typeof(T))
方法
2、实例注册:使用RegisterInstance()方法
3、Lambda注册
4、泛型注册(最常用)
5、条件注册:
-
IfNotRegistered表示:如果没注册过xxx,就执行语句:
builder.RegisterType<TeacherRepository>()
.AsSelf()
.IfNotRegistered(typeof(ITeacherRepository));
-
OnlyIf表示:只有...,才会执行语句:
builder.RegisterType<TeacherService>()
.AsSelf()
.As<ITeacherService>()
.OnlyIf(x =>
x.IsRegistered(new TypedService(typeof(ITeacherRepository)))||
x.IsRegistered(new TypedService(typeof(TeacherRepository))));
6、程序集批量注册,利用反射实