AtuoFac使用详细教程
AtuoFac
AtuoFac:它是一个第三方插件,可以实现自定义服务注册,自动实现注册(前提命名要统一).
一、引用Nuget包
二、创建实体类继承Autofac.Module
三、重写Load方法
四、动态加载程序集(反射)
.dll文件是Dynamic Link Library(动态链接库)文件的缩写,它是一种共享库文件,包含了程序所需的代码和数据。加入项目后只可使用不能更改。
//获取Demo.IRepository文件中的dll文件加载的程序集给IsIRepository var IsIRepository = Assembly.Load("Demo.IRepository");
五、根据名称约定,将程序集放置容器
//RegisterAssemblyTypes:接受一个或多个程序集的参数数组。 默认情况下,程序集中的所有公共具体类都将被注册。 //要筛选已注册的类型,请使用Where()谓词: //要从扫描中排除类型,请使用Except()谓词,Except()谓词还允许您为特定的排除类型自定义注册: //AsImplementedInterfaces(): 是以接口方式进行注入,注入这些类的所有的公共接口作为服务(除了释放资源),它可以自动识别继承的接口进行注册(前提需要继承接口) //EndsWith: 方法用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。 builder.RegisterAssemblyTypes(IsIRepository) .Where(x=>x.Name.EndsWith("Repository")) .AsImplementedInterfaces();
六、回到Program里进行AtuoFac注入使用
配置使用Autofac作为服务提供程序工厂,并注册了一个AutoFac模块到容器中,用于定义和配置依赖项的注册。
//builder.Host.UseServiceProviderFactory():这行代码指定了使用Autofac来创建服务提供程序工厂。这意味着Autofac将负责解析和提供应用程序中的依赖项。然后使用了ContainerBuilder作为容器类型。 builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory()).ConfigureContainer<ContainerBuilder>(builder => { //在configureDelegate中,我们使用了builder对象来注册一个AutoFac模块。 //RegisterModule方法用于向容器中注册一个模块,这个模块可以定义和配置依赖项的注册。 builder.RegisterModule(new AutoFac()); });