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

厦门 网站建设 闽icp百度电话人工服务

厦门 网站建设 闽icp,百度电话人工服务,医院做网站需要备案吗,wordpress 广告屏蔽.NET8/.NETCore 依赖接口注入&#xff1a;自动注入项目中所有接口和自定义类 目录 自定义依赖接口扩展类&#xff1a;HostExtensions AddInjectionServices方法GlobalAssemblies 全局静态类测试 自定义依赖接口 需要依赖注入的类必须实现以下接口。 C# /// <summary>…

ASP.NETCore/WebApi 自动依赖注入接口和类-开发框架文库

.NET8/.NETCore 依赖接口注入:自动注入项目中所有接口和自定义类

目录

  • 自定义依赖接口
  • 扩展类:HostExtensions AddInjectionServices方法
  • GlobalAssemblies 全局静态类
  • 测试

自定义依赖接口

需要依赖注入的类必须实现以下接口。

C#

    /// <summary>/// 依赖接口/// </summary>public interface IDependency { }/// <summary>/// 注入接口,生命周期:Transient/// </summary>public interface ITransientDependency : IDependency { }/// <summary>/// 注入接口,生命周期:Scoped/// </summary>public interface IScopedDependency : IDependency { }/// <summary>/// 注入接口,生命周期:Singleton/// </summary>public interface ISingletonDependency : IDependency { }

扩展类:HostExtensions AddInjectionServices方法

C#

 public static class HostExtensions{/// <summary>/// 自动注入接口, 注入到服务容器IServiceCollection/// </summary>/// <param name="services"></param>/// <returns></returns>public static IServiceCollection AddInjectionServices(this IServiceCollection services){//服务生命周期映射Dictionary<Type, ServiceLifetime> map = new Dictionary<Type, ServiceLifetime>{{ typeof(ITransientDependency),ServiceLifetime.Transient },{ typeof(IScopedDependency),ServiceLifetime.Scoped },{ typeof(ISingletonDependency),ServiceLifetime.Singleton },{ typeof(IDependency),ServiceLifetime.Scoped },};//获取程序集所有实体模型Typevar listTypes = GlobalAssemblies.GetTypes();foreach (var type in listTypes){map.ToList().ForEach(aMap =>{//依赖注入接口var interfaceDependency = aMap.Key;if (interfaceDependency.IsAssignableFrom(type) && interfaceDependency != type && !type.IsAbstract && type.IsClass){//注入实现Console.WriteLine("注入实现:" + type.FullName + ", " + aMap.Value.ToString());                        services.Add(new ServiceDescriptor(type, type, aMap.Value));//获取当前类的所有接口var interfaces = listTypes.Where(x => x.IsInterface && x.IsAssignableFrom(type) && x != interfaceDependency).ToList();//有接口,注入接口if (interfaces.Count > 0){interfaces.ForEach(@inteface =>{Console.WriteLine("注入接口:" + type.FullName + "," + @inteface.FullName + ", " + aMap.Value.ToString());services.Add(new ServiceDescriptor(@inteface, type, aMap.Value));});}}});};return services;}}

GlobalAssemblies 全局静态类

加载程序集Assembly。

作用:

  • 用于初始化CSFramework.EF组件(注册实体模型)
  • 用于获取所有接口和类,依赖注入服务

C#

    public static class GlobalAssemblies{/// <summary>/// 加载程序集Assembly。/// 作用:1.用于初始化CSFramework.EF组件(注册实体模型)///      2.用于获取所有接口和类,依赖注入服务/// </summary>/// <param name="hostBuilder"></param>/// <returns></returns>public static void LoadAssemblies(){//加载以下程序集(包含所有实体模型、自定义服务的程序集)GlobalAssemblies.Assemblies = new List<System.Reflection.Assembly>{//如:CSFramework.LicenseServerCore.dllSystem.Reflection.Assembly.Load("CSFramework.LicenseServerCore"),System.Reflection.Assembly.Load("CSFramework.Models"),};}/// <summary>/// WebApi框架所有程序集/// </summary>public static List<System.Reflection.Assembly> Assemblies { get; set; }/// <summary>/// WebApi框架所有类型Types/// </summary>public static List<System.Type> GetTypes(){return Assemblies.SelectMany(m => m.GetExportedTypes()).ToList();}}

测试

.NET8/.NETCore 依赖接口注入:自动注入项目中所有接口和实体类

http://www.tj-hxxt.cn/news/41105.html

相关文章:

  • 更换动易网站模板的方法北京seo优化排名
  • 做网站新科网站建设百度如何快速收录
  • 磨床 东莞网站建设seo优化个人博客
  • 为什么做网站编辑国内快速建站
  • 荣昌网站建设长沙seo网站排名优化公司
  • app的创建方式有哪些seo案例
  • 做的视频发到哪个网站好网站免费网站免费优化优化
  • 手机建网站优帮云seo搜索优化工程师招聘
  • 做公司网站 烟台互联网营销有哪些方式
  • 商业网站的建设与制作郑州抖音seo
  • 做worksheet的网站昆山网站建设推广
  • 做网站需要买什么网站推广什么意思
  • 建立个人网站流程百度推广开户费用
  • 西安做网站多钱关键词名词解释
  • 做网站的经验万网域名注册查询网
  • 如何做阿里巴巴的网站首页seo优化关键词
  • 微网站设计与开发竞赛电商运营怎么自学
  • 解释seo网站推广2020年十大关键词
  • 山西两学一做登录网站互联网产品推广是做什么的
  • 西宁网站seo外包专门做推广的软文
  • 视频制作软件排行榜前十武汉做seo
  • 怎么搭建wap网站aso优化工具
  • 网站域名注册后怎么打开网站宁德市政府
  • wordpress用户标签网站推广优化方法
  • 电商网站建设规划免费培训机构管理系统
  • 便宜网站空间今天特大军事新闻
  • 韩国还有出线的可能深圳百度快照优化
  • 房地产开发公司网站建设方案模板推广价格一般多少
  • 厦门域名空间建网站百度seo搜索引擎优化方案
  • asp的web音乐网站设计站长统计