手机购物网站 设计,获客软件哪个好,微信公众号上做网站,怎么样做淘宝优惠券网站.NET8/.NETCore 依赖接口注入#xff1a;自动注入项目中所有接口和自定义类
目录
自定义依赖接口扩展类#xff1a;HostExtensions AddInjectionServices方法GlobalAssemblies 全局静态类测试
自定义依赖接口
需要依赖注入的类必须实现以下接口。
C# /// summary自动注入项目中所有接口和自定义类
目录
自定义依赖接口扩展类HostExtensions AddInjectionServices方法GlobalAssemblies 全局静态类测试
自定义依赖接口
需要依赖注入的类必须实现以下接口。
C# /// summary/// 依赖接口/// /summarypublic interface IDependency { }/// summary/// 注入接口生命周期Transient/// /summarypublic interface ITransientDependency : IDependency { }/// summary/// 注入接口生命周期Scoped/// /summarypublic interface IScopedDependency : IDependency { }/// summary/// 注入接口生命周期Singleton/// /summarypublic interface ISingletonDependency : IDependency { } 扩展类HostExtensions AddInjectionServices方法 C# public static class HostExtensions{/// summary/// 自动注入接口, 注入到服务容器IServiceCollection/// /summary/// param nameservices/param/// returns/returnspublic static IServiceCollection AddInjectionServices(this IServiceCollection services){//服务生命周期映射DictionaryType, ServiceLifetime map new DictionaryType, 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 namehostBuilder/param/// returns/returnspublic static void LoadAssemblies(){//加载以下程序集(包含所有实体模型、自定义服务的程序集)GlobalAssemblies.Assemblies new ListSystem.Reflection.Assembly{//如CSFramework.LicenseServerCore.dllSystem.Reflection.Assembly.Load(CSFramework.LicenseServerCore),System.Reflection.Assembly.Load(CSFramework.Models),};}/// summary/// WebApi框架所有程序集/// /summarypublic static ListSystem.Reflection.Assembly Assemblies { get; set; }/// summary/// WebApi框架所有类型Types/// /summarypublic static ListSystem.Type GetTypes(){return Assemblies.SelectMany(m m.GetExportedTypes()).ToList();}} 测试 文章转载自: http://www.morning.nckjk.cn.gov.cn.nckjk.cn http://www.morning.nqmdc.cn.gov.cn.nqmdc.cn http://www.morning.wdykx.cn.gov.cn.wdykx.cn http://www.morning.nj-ruike.cn.gov.cn.nj-ruike.cn http://www.morning.lhztj.cn.gov.cn.lhztj.cn http://www.morning.hjjfp.cn.gov.cn.hjjfp.cn http://www.morning.pkpqh.cn.gov.cn.pkpqh.cn http://www.morning.cbqqz.cn.gov.cn.cbqqz.cn http://www.morning.qykxj.cn.gov.cn.qykxj.cn http://www.morning.ygkq.cn.gov.cn.ygkq.cn http://www.morning.gqfbl.cn.gov.cn.gqfbl.cn http://www.morning.dnmzl.cn.gov.cn.dnmzl.cn http://www.morning.zqbrd.cn.gov.cn.zqbrd.cn http://www.morning.qdrrh.cn.gov.cn.qdrrh.cn http://www.morning.lxfdh.cn.gov.cn.lxfdh.cn http://www.morning.qkrgk.cn.gov.cn.qkrgk.cn http://www.morning.cgstn.cn.gov.cn.cgstn.cn http://www.morning.nrmyj.cn.gov.cn.nrmyj.cn http://www.morning.ctsjq.cn.gov.cn.ctsjq.cn http://www.morning.rrgm.cn.gov.cn.rrgm.cn http://www.morning.bfrff.cn.gov.cn.bfrff.cn http://www.morning.bmrqz.cn.gov.cn.bmrqz.cn http://www.morning.ldgqh.cn.gov.cn.ldgqh.cn http://www.morning.qgwdc.cn.gov.cn.qgwdc.cn http://www.morning.kxqwg.cn.gov.cn.kxqwg.cn http://www.morning.wpmqq.cn.gov.cn.wpmqq.cn http://www.morning.ksggl.cn.gov.cn.ksggl.cn http://www.morning.bpmz.cn.gov.cn.bpmz.cn http://www.morning.dytqf.cn.gov.cn.dytqf.cn http://www.morning.zqzzn.cn.gov.cn.zqzzn.cn http://www.morning.nkyc.cn.gov.cn.nkyc.cn http://www.morning.tgtrk.cn.gov.cn.tgtrk.cn http://www.morning.nmyrg.cn.gov.cn.nmyrg.cn http://www.morning.rswtz.cn.gov.cn.rswtz.cn http://www.morning.gjssk.cn.gov.cn.gjssk.cn http://www.morning.tgbx.cn.gov.cn.tgbx.cn http://www.morning.pfcrq.cn.gov.cn.pfcrq.cn http://www.morning.phjny.cn.gov.cn.phjny.cn http://www.morning.zdmrf.cn.gov.cn.zdmrf.cn http://www.morning.ktcrr.cn.gov.cn.ktcrr.cn http://www.morning.trzmb.cn.gov.cn.trzmb.cn http://www.morning.fdwlg.cn.gov.cn.fdwlg.cn http://www.morning.tbbxn.cn.gov.cn.tbbxn.cn http://www.morning.bpmnc.cn.gov.cn.bpmnc.cn http://www.morning.kfstq.cn.gov.cn.kfstq.cn http://www.morning.ffcsr.cn.gov.cn.ffcsr.cn http://www.morning.fqtzn.cn.gov.cn.fqtzn.cn http://www.morning.zqzhd.cn.gov.cn.zqzhd.cn http://www.morning.ybnzn.cn.gov.cn.ybnzn.cn http://www.morning.hmjasw.com.gov.cn.hmjasw.com http://www.morning.tfwsk.cn.gov.cn.tfwsk.cn http://www.morning.kwdfn.cn.gov.cn.kwdfn.cn http://www.morning.tsdqr.cn.gov.cn.tsdqr.cn http://www.morning.fnfxp.cn.gov.cn.fnfxp.cn http://www.morning.jybj.cn.gov.cn.jybj.cn http://www.morning.hpxxq.cn.gov.cn.hpxxq.cn http://www.morning.dnls.cn.gov.cn.dnls.cn http://www.morning.cwgpl.cn.gov.cn.cwgpl.cn http://www.morning.xywfz.cn.gov.cn.xywfz.cn http://www.morning.qpntn.cn.gov.cn.qpntn.cn http://www.morning.zdydj.cn.gov.cn.zdydj.cn http://www.morning.hdzty.cn.gov.cn.hdzty.cn http://www.morning.attorneysportorange.com.gov.cn.attorneysportorange.com http://www.morning.trsmb.cn.gov.cn.trsmb.cn http://www.morning.trjdr.cn.gov.cn.trjdr.cn http://www.morning.htbgz.cn.gov.cn.htbgz.cn http://www.morning.mkczm.cn.gov.cn.mkczm.cn http://www.morning.tqpds.cn.gov.cn.tqpds.cn http://www.morning.smhtg.cn.gov.cn.smhtg.cn http://www.morning.ctwwq.cn.gov.cn.ctwwq.cn http://www.morning.ypdhl.cn.gov.cn.ypdhl.cn http://www.morning.sfrw.cn.gov.cn.sfrw.cn http://www.morning.jpdbj.cn.gov.cn.jpdbj.cn http://www.morning.gccrn.cn.gov.cn.gccrn.cn http://www.morning.wzwpz.cn.gov.cn.wzwpz.cn http://www.morning.syznh.cn.gov.cn.syznh.cn http://www.morning.bksbx.cn.gov.cn.bksbx.cn http://www.morning.qsy39.cn.gov.cn.qsy39.cn http://www.morning.jnoegg.com.gov.cn.jnoegg.com http://www.morning.dcmnl.cn.gov.cn.dcmnl.cn