关于依赖注入autofac的相关知识
1.AsImplementedInterfaces() 是以接口方式进行注入,注入这些类的所有的公共接口作为服务(除了释放资源) A:IA builder.RegisterType<A>().AsImplementedInterfaces(); 使用时用IA,会返回一个A的实例,即将自身的实例进行注入 2.InstancePerRequest() 每次请求共享同一个实例,使用ef时,使不同的操作使用同一个数据上下文 builder.RegisterType<A>().AsImplementedInterfaces().InstancePerRequest() ; 3.PreserveExistingDefaults() 防止后面注册的覆盖前面注册的,指定为非默认值。对于同一个接口,后面注册的会覆盖前面注册的。 builder.Register<A>() builder.Register<AA>() builder.Register<AA>() 4. 5.SingleInstance 为每次请求都使用同一个对象,单例模式 6.RegisterGeneric 对泛型类进行注册 builder.RegisterGeneric(typeof( 7.RegisterInstance() 注册一个实例,比如: 对已经存在的对象的实例进行注册,这样可以使实例转化为由容器托管的实例 A:IA public class B:IB { A a=new A(); } builder.RegisterInstance(B.A).As<IA>(); builder.RegisterInstance(B.A).As<IA>(). 8.RegisterControllers() 注册Controllers builder.RegisterControllers(Assembly.GetExecutingAssembly()) 注册当前程序集中的所有Controllers 9.RegisterFilterProvider() 注册Filter过滤器(非全局) builder.RegisterFilterProvider() 10.RegisterAssemblyTypes 注册类 builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly())注册了当前程序集内的所有的类 11.InstancePerMatchingLifetimeScope 在一个做标识的生命周期域中,每一个依赖或调用创建一个单一的共享的实例。打了标识了的生命周期域中的子标识域中可以共享父级域中的实例 builder.RegisterType<A>() .AsImplementedInterfaces() .InstancePerMatchingLifetimeScope(); 13.InstancePerLifetimeScope在一个生命周期中,每一次的依赖组件或调用(Resolve())创建一个单一的共享的实例,且每一个不同的生命周期域,实例是不同的 14.UsingConstructor(参数) 自动装配,手动使用特定的构造函数 builder.RegisterType<A>().UsingConstructor(typeof(IA),typeof(IAA)) 这样指定调用的是A(IA,IAA)的构造函数,如果该构造函数不存在则报错 15.[AsClosedTypesOf(open)]AsClosedTypesOf(typeof(IA<>)):如果是多继承的话,注册的程序集所对应的服务(接口)是离这个类最近的开放的泛型实例(接口) 例:builder.RegisterAssemblyTypes(A).AsClosedTypesOf(typeof(IRepository<>)); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Reactor Pattern Explained - Part 1, 2 and 3
- oracle – 如何将OS变量加载到PL / SQL中?
- c# – 在会话中存储散列密码是不可取的吗?
- 微信支付中xml和map互转
- uboot之nand flash相关(2)
- SSIS – 使用Attunity Oracle Datasource在Oracle Query中使
- ios – 如何将我的应用程序作为模块包含在Swift Playground
- (二)读取DB2中XML数据并转换成Dom4j对象 然后再转成org.w
- 疯狂XML学习笔记(2)-------------格式要求
- ruby-on-rails – Rails – 渲染自定义xml