当前位置: 首页 > news >正文

.net core中获得程序集以及注入框架的方法总结

虚方法

public class Animal
{
// 虚方法
public virtual void MakeSound()
{
Console.WriteLine("动物发出声音");
}
}public class Dog : Animal
{
// 重写虚方法
public override void MakeSound()
{
Console.WriteLine("汪汪汪!");
}
}

var sss = Assembly.Load("Swift.BBS.Service");//静态方法返回一个实例类Assembly
Assembly作为类,有静态方法和实例化后的方法,

program.cs

builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
builder.Host.ConfigureContainer<ContainerBuilder>(builder => builder.RegisterModule(new AutofacModuleRegister()));

 

Extensions类库下AutofacModuleRegister.cs

namespace SwiftCode.BBS.Extensions.ServiceExtensions
{public class AutofacModuleRegister:Autofac.Module{protected override void Load(ContainerBuilder containerBuilder){//containerBuilder.RegisterType<ArticleSerivce>().As<IArticleService>();//服务项目程序集Assembly service = Assembly.Load("Swift.BBS.Service");Assembly repository = Assembly.Load("Swift.BBS.Repository");//项目必须以xxx结尾containerBuilder.RegisterAssemblyTypes(service).Where(n => n.Name.EndsWith("Service") && !n.IsAbstract).InstancePerLifetimeScope().AsImplementedInterfaces();containerBuilder.RegisterAssemblyTypes(service).Where(n => n.Name.EndsWith("Repository") && !n.IsAbstract).InstancePerLifetimeScope().AsImplementedInterfaces();}}
}

针对以上Autofac注入依赖项,的几个问题
1. containerBuilder.RegisterAssemblyTypes(service).Where(n => n.Name.EndsWith("Service") && !n.IsAbstract) .InstancePerLifetimeScope().AsImplementedInterfaces();是什么意思?
//RegisterAssemblyTypes(service).Where(n => n.Name.EndsWith("Service") && !n.IsAbstract)获得service程序集并进行筛选,后跟筛选条件,IsAbstract抽象类
//.InstancePerLifetimeScope()注册为Scope类型作用域
//AsImplementedInterfaces()映射(publicservice: Ipublicservice,publicservice自动映射成ipublicservice,在控制类可以直接注册ipublicservice使用)
2.为什么控制类中需要把服务映射成服务接口类在注入使用?




http://www.hskmm.com/?act=detail&tid=8534

相关文章:

  • python基础篇-list(列表)
  • vscode使用powershell中文乱码
  • 关于如何读懂 P11832 [省选联考 2025] 图排列?
  • Untitled
  • 敏感性分析
  • 完整教程:论园区电气安全管理系统的重要性
  • 基于CSU8RP1186芯片的握力器解决方案
  • 亮相2025年服贸会,天翼云打造高质量算力服务新生态!
  • 易路薪酬专家Agent:基于10亿级数据与AI的智能薪酬解决方案
  • 有点意思!Java8后最有用新特性排行榜!
  • 数据结构 Trick 之:KDT 求 k 近/远 点
  • .NET 8程序配置版本及产品信息
  • C语言第二讲:进制转化
  • XXL-JOB(4)
  • QOJ #10485. Peculiar Protocol 题解
  • C++ 常用关键字
  • 【AP出版】第四届数理统计与经济分析国际学术会议 (MSEA 2025)
  • 数据结构 Trick 之:区间子区间计数
  • mapstruct.Mapper|Mapping详解
  • 抽象代数-学习笔记
  • 如何在保证质量的前提下,快速完成一份 PPT?
  • Source Code Summarization in the Era of Large Language Models 论文笔记
  • 线性回归-入门案例
  • XXL-JOB(3)
  • ClickHouse 表引擎深度解析:ReplacingMergeTree、PARTITION、PRIMARY KEY、ORDER BY 详解 - 若
  • UOS统信服务器操作系统V20(1070)安装mysql8.4.5(建议安装glibc2.28版本)
  • web5(phps源码泄露)
  • web3(自带网络工具包查看数据)
  • web17(备份的sql文件泄露)
  • web11(通过Dns检查查询Flag)