AutoFac

  • AutoFac已关闭评论
  • 124 次浏览
  • A+
所属分类:.NET技术
摘要

第三方IOC容器它是C#语言联系很紧密,也就是说C#里的很多编程方式都可以为Autofac使用,例如可以用Lambda表达式注册组件


AutoFac的配置使用

一.什么是AutoFac

第三方IOC容器

二.优点

  • 它是C#语言联系很紧密,也就是说C#里的很多编程方式都可以为Autofac使用,例如可以用Lambda表达式注册组件

  • 较低的学习曲线,学习它非常的简单,只要你理解了IoC和DI的概念以及在何时需要使用它们

  • XML配置支持

  • 自动装配

  • 与Asp.Net MVC 3集成

  • 微软的Orchad开源程序使用的就是Autofac,从该源码可以看出它的方便和强大

    三.使用

第一步:Negut包下载AutoFac和Autofac.Extensions.DependencyInjection

AutoFac

第二步:自定义一个类,方便对注入服务进行管理(AutoFacModelRegister)
步骤:1.继承Autofac.Module
2.//重写管道load方法,进行注册注入
3.在这里需要注意,必须让自己的程序集在api下面的ben可以找到,需要在依赖项找到程序集打开

AutoFac

代码实现
点击查看代码
public class AutoFacModelRegister:Autofac.Module     {         //重写管道load方法,进行注册注入         protected override void Load(ContainerBuilder builder)         {             //程序集注入业务服务(通过反射的方法动态获取程序集,"Repository","service"都需要注册)             //Load:加载程序集(自己项目的程序集名称)             Assembly? IAppServices = Assembly.Load("RBAC.Exam.Repository");             //var AppServices = Assembly.Load("Service");             //根据名称约定(服务层的接口和实现均以Repository结尾),实现服务接口和服务实现的依赖             builder.RegisterAssemblyTypes(IAppServices)             //(带有指定后缀的文件)               .Where(t => t.Name.EndsWith("Repository"))               //开放接口,注入               .AsImplementedInterfaces(); 
        //单个注册         builder.RegisterType(typeof(JwtSecurityTokenHandler)).SingleInstance();         builder.RegisterType(typeof(TokenHelper)).SingleInstance();     } } 
</details> 
第三步:在Program.cs进行配置
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory())     .ConfigureContainer<ContainerBuilder>(builder =>     {     	//此处AutoFacModelRegister为自己第二步创建的类         builder.RegisterModule<AutoFacModelRegister>();     });