.net 8项目通过Autofac获取程序集服务并注册
首先新建一个AutofacModuleRegister类并继承Autofac.Module。
public class AutofacModuleRegister : Autofac.Module
{
protected override void Load(ContainerBuilder builder)
{
var basePath = AppContext.BaseDirectory;
var servicesDllFile = Path.Combine(basePath, "Services.dll");
var repositoryDllFile = Path.Combine(basePath, "Repository.dll");
if (!(File.Exists(servicesDllFile) && File.Exists(repositoryDllFile)))
{
var msg = "Repository.dll和service.dll 丢失,因为项目解耦了,所以需要先F6编译,再F5运行,请检查 bin 文件夹,并拷贝。";
Log.Error(msg);
throw new Exception(msg);
}
// 获取 Service.dll 程序集服务,并注册
var assemblysServices = Assembly.LoadFrom(servicesDllFile);
builder.RegisterAssemblyTypes(assemblysServices).AsImplementedInterfaces().InstancePerDependency();
// 获取 Repository.dll 程序集服务,并注册
var assemblysRepository = Assembly.LoadFrom(repositoryDllFile);
builder.RegisterAssemblyTypes(assemblysRepository).AsImplementedInterfaces().InstancePerDependency();
}
}
2.在program.cs中注册自定义的Autofac配置文件。

var builder = WebApplication.CreateBuilder(args);
// 1、配置host与容器
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureContainer<ContainerBuilder>(builder =>
{
builder.RegisterModule(new AutofacModuleRegister());
});
源码地址:https://github.com/cplmlm/BasicFramework
.net 8项目通过Autofac获取程序集服务并注册的更多相关文章
- C#获取程序集的版本号和最后编译时间
C#获取程序集的版本号:string ver = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToStrin ...
- C#反射实例应用--------获取程序集信息和通过类名创建类实例
AppDomain.CurrentDomain.GetAssemblies();获取程序集,但是获取的只是已经加载的dll,引用的获取不到. System.Reflection.Assembly.Ge ...
- C#反射 获取程序集信息和通过类名创建类实例(转载)
C#反射获取程序集信息和通过类名创建类实例 . System.Reflection 命名空间:包含通过检查托管代码中程序集.模块.成员.参数和其他实体的元数据来检索其相关信息的类型. Assembly ...
- Taurus.MVC 微服务框架 入门开发教程:项目集成:1、服务端:注册中心、网关(提供可运行程序下载)。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...
- WPF 获取程序路径的一些方法,根据程序路径获取程序集信息
一.WPF 获取程序路径的一些方法方式一 应用程序域 //获取基目录即当前工作目录 string str_1 = System.AppDomain.CurrentDomain.BaseDirector ...
- C#中获取程序集版本号的方法
我的方法: string version = Assembly.GetExecutingAssembly().GetName().Version.ToString(); 方法一: public v ...
- [翻译]利用C#获取终端服务(Terminal Services)会话的闲置时间
[翻译]利用C#获取终端服务(Terminal Services)会话的闲置时间 作者:Tuuzed(土仔) 发表于:2008年2月29日版权声明:可以任意转载,转载时请务必以超链接形式标明文章原 ...
- Axure如何建立共享项目、如何编辑共享项目、如何获取共享项目
如果小伙伴是一名编程工作者,我们不可以避免的会和Axure这块软件握手,但是但一个项目需要协同操作的时候,就需要用到项目共享的功能.类似我们的svn,想起机房合作的时候,每天早上来到427的我们,打开 ...
- 获取Windows服务下当前路径的方法
获取Windows服务下当前路径的方法 获取当前运行程序路径 包含exe Assembly.GetExecutingAssembly().Location; D:\xxxxxx\bin\Debug\x ...
- 获取AFP服务信息
获取AFP服务信息 如果苹果系统开放TCP 548端口,说明其开启了AFP服务.这个时候,可以使用Nmap的afp-serverinfo脚本获取对应的服务信息.获取的信息包括服务名.机器类型.AF ...
随机推荐
- 从零开始学Flink:揭开实时计算的神秘面纱
一.为什么需要Flink? 当你在电商平台秒杀商品时,1毫秒的延迟可能导致交易失败:当自动驾驶汽车遇到障碍物时,10毫秒的计算延迟可能酿成事故.这些场景揭示了一个残酷事实:数据的价值随时间呈指数级衰减 ...
- 数栈技术分享:利用 Atomic 构建 React 项目工作流,so easy!
数栈是云原生-站式数据中台PaaS,我们在github和gitee上有一个有趣的开源项目:FlinkX,FlinkX是一个基于Flink的批流统一的数据同步工具,既可以采集静态的数据,也可以采集实时变 ...
- 蛟分承影,雁落忘归 —— 袋鼠云一站式全自动化运维管家 ChengYing(承影)正式开源
原文地址: 交流蛟分承影,雁落忘归--袋鼠云一站式全自动化运维管家ChengYing(承影)正式开源 技术交流:30537511(钉钉群) 我们兴奋的向大家宣布一个好消息 DTstackCon新成 ...
- UFT 关于excel及datatable的处理
1. excel 2. datatable
- 2025 智能制造必看!国内五大 MES 系统排名深度解析
在 "中国制造 2025" 战略持续推进的背景下,制造企业数字化转型进入深水区.作为连接计划层与控制层的核心枢纽,MES(制造执行系统)已成为实现智能工厂的关键技术.2024 年国 ...
- C++ set/multiset容器 学习总结
-------------------------------------set/multiset容器 set/multiset特性 set/multiset的特性是所有元素会根据元素的值自动进行排序 ...
- 开源 vGPU 方案 HAMi 原理分析 Part1:hami-device-plugin-nvidia 实现
本文为开源的 vGPU 方案 HAMi 实现原理分析第一篇,主要分析 hami-device-plugin-nvidia 实现原理. 之前在 开源 vGPU 方案:HAMi,实现细粒度 GPU 切分 ...
- Codeforces Round #688 (Div. 2) ABC题解
A. Cancel the Trains 签到题,看两边有无相同相对位置出发的,加入计数即可. view code #include<iostream> #include<strin ...
- Almost Isometric Mesh Parameterization through Abstract Domains
简介 上一篇论文中的参数化没看懂看看相关的论文. 介绍 我们对于一个好的参数化被描述为 低扭曲的.保持角度和保持面积. 低复杂度的. TODO
- 基于微服务架构,轻量级的ESB平台
ESB企业服务总线是传统中间件技术与XML.Web服务等技术结合的产物.ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素.但相比传统的单体架构的ESB企业服务总线系统,RestClou ...