当前位置: 首页 > 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.zskr.cn/news/7412.html

相关文章:

  • 银河麒麟桌面版v10sp1安装redis
  • 敏感性分析
  • 适合竞赛选手的干净好看的neovim配置!!!
  • 亮相2025年服贸会,天翼云打造高质量算力服务新生态!
  • 易路薪酬专家Agent:基于10亿级数据与AI的智能薪酬解决方案
  • XXL-JOB(4)
  • QOJ #10485. Peculiar Protocol 题解
  • C++ 常用关键字
  • vim 入门教学2
  • 如何在保证质量的前提下,快速完成一份 PPT?
  • UOS统信服务器操作系统V20(1070)安装mysql8.4.5(建议安装glibc2.28版本)
  • 强烈推荐 | 阿里开源的这11个神级项目
  • 锁屏界面无法通过任意键弹出开机密码
  • 应急响应-日志分析 - voasem
  • 一些编程语言的发展史
  • mysql生成uuid,3种实用方法详解
  • Oracle数据库镜像大全
  • 固态电池革命:我们离“续航焦虑终结者”还有多远?
  • 心得
  • 深入解析:深入剖析C++内存模型:超越原子性的多线程编程基石
  • 百度地图如何获取瓦片图
  • Codeforces Round 1051 (Div 2)
  • scheduleAtFixedRate
  • CRMEB标准版PHP核销功能深度解析,附权限配置技巧
  • Python numba jit加速计算
  • 01_网络分层模型
  • SaaS 是什么?一文带你看懂 SaaS 与传统软件的区别
  • 刀齿磨损智能检测APP
  • TJOI2007--线段
  • 充电桩测试:守护绿色出行的安全密码