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

asp.net core6 webapi 使用反射批量注入接口层和实现接口层的接口的类到ioc中

IBLL接口层类库

namespace IBLL
{public interface ICar{string CarName();}
}
namespace IBLL
{public interface IRed{string RedName();}
}

BLL实现接口层类库

namespace BLL
{public class Car : ICar{public string CarName(){return "BBA";}}
}
namespace BLL
{public class Red : IRed{public string RedName(){return "红色";}}
}

program中利用反射批量注入

 // 获取实现接口的类库的程序集var assembly = Assembly.Load("BLL");//获取定义接口的类库的程序集var assembly1 = Assembly.Load("IBLL");// 获取所有接口类型var interfaceTypes = assembly1.GetTypes().Where(t => t.IsInterface).ToList();// 遍历接口类型foreach (var interfaceType in interfaceTypes){// 获取实现该接口的所有类型var implementationTypes = assembly.GetTypes().Where(t => interfaceType.IsAssignableFrom(t) && !t.IsAbstract).ToList();// 注册实现类型到IoC容器中foreach (var implementationType in implementationTypes){builder.Services.AddTransient(interfaceType, implementationType);}}

在控制器中使用构造函数传参就可以调用已经注册的所有是是实现接口的类了的实列了

public readonly ICar _car;public readonly IRed _red;public WeatherForecastController(IRed red, ICar car){_red = red;_car = car;}[HttpGet]public string car(){return _car.CarName();}[HttpGet]public string red(){return _red.RedName();}
http://www.lryc.cn/news/122175.html

相关文章:

  • 【2023】字节跳动 10 日心动计划——第九关
  • 小龟带你敲排序之冒泡排序
  • Nacos AP架构集群搭建(Windows)
  • nodejs+vue+elementui,图书评论管理系统_g9e3a
  • 基于TorchViz详解计算图(附代码)
  • 解决GitHub的速度很慢的几种方式
  • 设计模式再探——策略模式
  • 基于Googlenet深度学习网络的人员行为动作识别matlab仿真
  • 存储过程的学习
  • zookeeperAPI操作与写数据原理
  • 防火墙对双通道协议的处理
  • vscode搭建c语言环境问题
  • 全网最全的接口自动化测试教程
  • 数据结构----结构--线性结构--链式存储--链表
  • 【5G 核心网】5G 多PDU会话锚点技术介绍
  • K8s环境下监控告警平台搭建及配置
  • 微信小程序在使用vant组件库时构建npm报错
  • Django实现音乐网站 ⑽
  • SpringMVC的架构有什么优势?——异常处理与文件上传(五)
  • 【java面向对象中static关键字】
  • 系统学习Linux-Redis集群
  • 【每日随笔】帝王心术 ② ( 如何培养下一代 | 重点培养孩子某一项特长 | 价值观培养 | 独立思考 | 人性和谋略教育 | 资源传承 | 人生指引 )
  • Git简介
  • STM32入门学习之定时器输入捕获
  • 贪心算法:基础入门篇
  • 【Windows10下启动RocketMQ报错:找不到或无法加载主类 Files\Java\jdk1.8.0_301\lib\dt.jar】解决方法
  • 深入篇【Linux】学习必备:进程理解(从底层探究进程概念/进程创建/进程状态/进程优先级)
  • Python 潮流周刊#15:如何分析 FastAPI 异步请求的性能?
  • 基于Java+SpringBoot+Vue的网吧管理系统设计与实现(源码+LW+部署文档等)
  • redis设置database 不生效剖析