首页 > 编程语言 >Autofac 批量注册程序集下的服务

Autofac 批量注册程序集下的服务

时间:2024-09-18 09:24:44浏览次数:1  
标签:Autofac controllerBaseType 批量 builder dll 注册 var containerBuilder 集下

public class AutofacModuleRegister : Autofac.Module
{
    protected override void Load(ContainerBuilder builder)
    {
        var basePath = AppContext.BaseDirectory;

        #region 带有接口层的服务注入

        var servicesDllFile = Path.Combine(basePath, "CoreCms.Net.Services.dll");
        var repositoryDllFile = Path.Combine(basePath, "CoreCms.Net.Repository.dll");

        if (!(File.Exists(servicesDllFile) && File.Exists(repositoryDllFile)))
        {
            var msg = "Repository.dll和Services.dll 丢失,因为项目解耦了,所以需要先F6编译,再F5运行,请检查 bin 文件夹,并拷贝。";
            throw new Exception(msg);
        }

        // 获取 Service.dll 程序集服务,并注册
        var assemblysServices = Assembly.LoadFrom(servicesDllFile);
        //支持属性注入依赖重复
        builder.RegisterAssemblyTypes(assemblysServices).AsImplementedInterfaces().InstancePerDependency()
            .PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies);

        // 获取 Repository.dll 程序集服务,并注册
        var assemblysRepository = Assembly.LoadFrom(repositoryDllFile);
        //支持属性注入依赖重复
        builder.RegisterAssemblyTypes(assemblysRepository).AsImplementedInterfaces().InstancePerDependency()
            .PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies);
        #endregion
    }
}

Program.cs
#region AutoFac注册============================================================================

builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
builder.Host.ConfigureContainer<ContainerBuilder>(containerBuilder =>
{
    //获取所有控制器类型并使用属性注入
    var controllerBaseType = typeof(ControllerBase);
    containerBuilder.RegisterAssemblyTypes(typeof(Program).Assembly)
        .Where(t => controllerBaseType.IsAssignableFrom(t) && t != controllerBaseType)
        .PropertiesAutowired();

    containerBuilder.RegisterModule(new AutofacModuleRegister());

});

#endregion

 

标签:Autofac,controllerBaseType,批量,builder,dll,注册,var,containerBuilder,集下
From: https://www.cnblogs.com/SmallChen/p/18417933

相关文章

  • 如何批量缩短长链接?简单三步,快速提升工作效率!
    在如今的线上推广领域,链接扮演着至关重要的角色。然而,长链接却存在诸多弊端,比如占用字符过多、影响排版美观、点击率欠佳,且生成的二维码过于复杂影响识别。因此,许多小伙伴会借助短网址生成器,将长链接转化为短链接后加以使用。但不少生成器要么只能逐条生成,要么一次最多生成10......
  • 存储论——经济订货批量模型精解
    运筹学中的存储问题主要研究如何通过优化库存管理,确保在满足需求的同时,尽可能降低与库存相关的成本。这一问题在生产制造、物流运输、仓储等各个领域具有重要应用。核心目标是通过合理规划进货、存货和出货策略,实现成本最小化和资源的高效利用。在实际应用中,由于需求的不确定性、......
  • 过拟合与欠拟合、批量标准化
    过拟合与欠拟合过拟合(Overfitting)1、基本概念:过拟合指的是模型在训练数据上表现很好,但在未见过的测试数据上表现较差的情况。过拟合发生的原因是模型过于复杂,能够记住训练数据的细节和噪声,而不是学习数据的通用模式。2、特征:模型在训练数据上的准确度高。模型在测试数据......
  • C#方法将数据库图片批量插入到EXCEL中
    效果图一般数据库图片查询出来为byte[]类型这里使用的是Spire.Officefor.NETnet4.0和net6.0可以使用附件的dll,其他版本可去官网下载相应的dll官方网站:https://www.e-iceblue.com/GitHub:https://github.com/eiceblueNuGet:https://www.nuget.org/packages/FreeSpire.Off......
  • Python使用starmap函数批量更新数据库
    在数据库操作中,有时候需要对多条记录进行批量更新操作,而这些记录的更新逻辑可能是相同的,只是参数不同。starmap函数可以更加高效地实现批量更新数据库的操作。importsqlite3fromitertoolsimportstarmap#连接数据库conn=sqlite3.connect('example.db')cursor=conn......
  • AI视频批量自动剪辑软件
     小咖批量剪辑助手是一款视频批量自动剪辑软件,具有智能化、批量化、操作简单等特点。该软件适用于自动化处理和生产视频,旨在帮助用户实现批量化生产产品推广视频的功能。三、安装与配置安装步骤:下载程序压缩包:访问官方网站或指定下载地址,下载小咖批量剪辑助手程序压缩......
  • AI视频批量自动剪辑软件
     小咖批量剪辑助手是一款视频批量自动剪辑软件,具有智能化、批量化、操作简单等特点。该软件适用于自动化处理和生产视频,旨在帮助用户实现批量化生产产品推广视频的功能。三、安装与配置安装步骤:下载程序压缩包:访问官方网站或指定下载地址,下载小咖批量剪辑助手程序压缩......
  • 代理ip批量检测工具,采用多线程并发编程,支持http,https,socks4,socks5协议!
     工具使用c++编程语言,采用多线程并发检测技术:支持ipv4及ipv6代理ip批量检测。支持httphttpssocks4及socks5代理服务器的批量检测。支持所有windows版本运行!导入方式支持手工选择文件及拖放文件。导入格式支持三种格式:第一种:用|号分割2409:8a50:8019:e470:a8d7:bdf0:fbfe:8b5......
  • 编程日记 批量导入数据
    编程日记批量导入数据1.用可视化界面:适合一次性导入,数据量可控2.写程序:for循环,建议分批,不要一把梭哈(可以用接口控制),要保证可控、幂等,注意线上环境和测试环境是有区别的导入1000w条,fori1000w(不能再main方法里面写,会报空指针异常,userMapper无法注入)缺点是.class并不是一个......
  • 【办公类】大组工会学习(文心一言+Python批量)
    背景需求:每学期要写一份工会大组学习读后感(9月-1月,共5次)学习内容9月、10月、11月、12月、1月的学习内容文字稿在班级里,我擅长电脑工作,所以这种写的工作都包了。中2班三位老师一共写3篇,加上上个班级的搭档也让我写一份,本次我要写4份学习读后感。随着AI技术的深入,我想......