首页 > 其他分享 >.Net Core 静态类获取注入服务

.Net Core 静态类获取注入服务

时间:2022-09-25 16:11:05浏览次数:39  
标签:Core ServiceLocator 静态 app System IApplicationBuilder using Net public

由于静态类中无法使用有参构造函数,从而不能使用常规的方式(构造函数获取) 获取服务,我们可以采取通过IApplicationBuilder 获取

1.首先创建一个静态类

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OnlineTest.Tools
{
    public static class ServiceLocator
    {
        public static IServiceProvider Instance { get; set; }

        public static IApplicationBuilder ApplicationBuilder { get; set; }


    }
}

2.再去setup中的Configure 方法中获取 IApplicationBuilder  对象

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        //此方法由运行时调用。使用此方法配置HTTP请求管道
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            ServiceLocator.Instance = app.ApplicationServices;
            ServiceLocator.ApplicationBuilder = app;

            app.UseDeveloperExceptionPage();
            app.UseSwagger();
            app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "知行.Api v1"));
            if (env.IsDevelopment())
            {

            }
     }

3.在需要使用的地方直接拿就ok了

var serviceScope= ServiceLocator.ApplicationBuilder.ApplicationServices.CreateScope();
var _dictionaryEntityBL = serviceScope.ServiceProvider.GetService(typeof(IDictionaryEntityBL)) as IDictionaryEntityBL;

 

标签:Core,ServiceLocator,静态,app,System,IApplicationBuilder,using,Net,public
From: https://www.cnblogs.com/superfeeling/p/16728047.html

相关文章

  • net core web项目(net 6.0)增加apicontroller
    program.cs增加contrller支持app.UseStaticFiles();app.UseRouting();app.UseAuthorization();app.MapRazorPages();app.MapControllers();//增加controllers映射ap......
  • C#教程 - 深入理解C#与.NET
    更新记录转载请注明出处:2022年9月25日发布。2022年9月10日从笔记迁移到博客。CILTypeDef类型定义TypeRef引用其他程序集的类型Assembly......
  • static静态变量的理解
    静态变量类型说明符是static。静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存......
  • kubernets 1.25 版本
    1.kubernets介绍:Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg),目前已经成为容器编排一个标准。在Docker技术的基础上,为容器化的应用提供部署运行、资源调......
  • ASP.NET Core使用承载启动(HostingStartup)程序集
    概念#    在ASP.NETCore中我们可以使用一种机制来增强启动时的操作,它就是HostingStartup。如何叫"增强"操作,相信了解过AOP概念的同学应该都非常的熟悉。我们常说AOP......
  • 【Linux】【虚拟机】 IP地址的动态与静态设置
    目录配置文件的修改配置文件的修改vim/etc/sysconfig/network-scripts/ifcfg-ens33IP配置方式(不指定:none,静态:static,动态:dhcp)如果想将动态地址改为静态地址,将dhcp改......
  • ASP.NET Core – Try Preview
    前言.NET7已经来到RC阶段了.通常RC就是我们(写库的人)要入场的时候了.有发现Bug要尽可能在这段期间提交.不然后患无穷.这篇主要就是来讲讲如果测试RC版本......
  • coredump快速定位
    https://utcc.utoronto.ca/~cks/space/blog/linux/KernelSegfaultMessageMeaningWhattheLinuxkernel'smessagesaboutsegfaultingprogramsmeanon64-bitx86Feb......
  • 静态static
    static是静态的意思,在程序中,可以直接通过类名进行访问,不需要创建对象。而且每一个对象都能调用该静态方法。并且,静态方法里面调用的,也应该是静态类型。并且不会因为对象的......
  • TAD calling 之 insulation score 分析
    1.导读本文主要对insulationscore的提出与计算方法进行简要的介绍,并展示一个计算insulationscore的过程。2.定义insulationscore是dekker实验室在2015年发表于N......