• AutoFac中常用方法说明


    虽然AutoFac中的方法都有说明,但是有些常用的方法不太好理解,不晓得这个方法的作用,是干嘛的。

    1、AsImplementedInterfaces()  是以接口方式进行注入,注入这些类的所有的公共接口作为服务

    2、InstancePerRequest()  每次请求共享同一个实例,使用ef时,使不同的操作使用同一个数据上下文

    3、PreserveExistingDefaults() 如果不止一个组件暴露了相同的服务, Autofac将使用最后注册的组件作为服务的提供方,那么使用PreserveExistingDefaults防止后面注册的覆盖前面注册的

    builder.Register<A>() .As<IA>();
    
    builder.Register<AA>() .As<IA>();  这样AA就会覆盖A
    
    builder.Register<AA>() .As<IA>().PreserveExistingDefaults()   这样A是IA的默认值,不会被AA覆盖

    4、InstancePerDependency为每个依赖或者调用(Resolve())都创建一个新的对象,唯一的实例

    5、SingleInstance 为每次请求都使用同一个对象,单例模式.告诉容器,是个单例,但这个单例不用自己实现。

    6、RegisterGeneric 对泛型类进行注册

    builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>))

    7、RegisterInstance() 注册一个实例,比如: 对已经存在的对象的实例进行注册,这样可以使实例转化为由容器托管的实例

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

    12、InstancePerHttpRequest在一次Http请求上下文中,共享一个组件实例。仅适用于asp.net mvc开发

    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<>));
  • 相关阅读:
    少走弯路,一个老程序猿谈PHP职业发展规划
    Wireshark网络分析就这么简单
    MySQL高可用架构之MHA
    一般项目的开发流程(公司之间是有差异)
    Java EE大作业之创造class类出现问题-------Implicit super constructor Object() is undefined for default constructor. Mu
    三层架构与MVC
    Android仿QQ界面
    Android之侧滑导航栏
    Android滑动删除功能
    资源链接
  • 原文地址:https://www.cnblogs.com/love201314/p/16256596.html
Copyright © 2020-2023  润新知