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

 

posted @ 2023-08-25 21:53  如果生活可以ctrl+z  阅读(41)  评论(1编辑  收藏  举报