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

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

时间:2022-12-02 23:24:39浏览次数: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/webenh/p/16945973.html

相关文章

  • ASP.NET Web API Demo OwinSelfHost 自宿主 Swagger Swashbuckle 在线文档
    新建WebAPI工程 选Empty,勾选WebAPI,不要选择WebAPI,那样会把MVC勾上,这里不需要MVCWebAPI工程属性 XML文件用于生成在线文档  新建Windows服务作为WebAPI的......
  • 使用自签名证书在Docker中部署Asp.Net Core(Abp)项目
    一编写Dockerfile文件FROMmcr.microsoft.com/dotnet/aspnet:6.0COPY//appWORKDIR/appEXPOSE80ENTRYPOINT["dotnet","Acme.BookStore.Web.dll"]#设置时区......
  • 使用Jexus+Mono运行.net开发的项目如何不让URL区分大小写
    最近一直再研究.net的跨平台问题,遇到的其中一个比较棘手的问题就是无论时钟Apatch还是Jexus里面,发布的站点访问的时候路径都是要区分大小写的(对于一个.net开发人员来说的确......
  • Ubutu+Apache+Mono 实现.net开发的网站跨平台移植
    最近公司转型,需要将现有使用的.net技术开发的平台系统在linux系统上跑起来,一方面是为了节省成本(Linux免费),另一方面,现在是大数据的填写,所有的技术要向java平台移植,起到一个......
  • .Net Core SignalR 初体验
    前言Asp.NetSignalR已经出来很久了,但是一直没有静下心来好好看看。昨天花了几个小时的时间看了下。首先借鉴了官方文档,如何搭建一个SignalR的Demo。参考文章:ht......
  • ASP.NET Core SignalR .NET 客户端
    项目2022/11/2913个参与者反馈通过ASP.NETCoreSignalR.NET客户端库可以从.NET应用与SignalR中心进行通信。查看或下载示例代码(如何下载)本文......
  • .Net中的DataTime类型 和 time_t类型转换
    今天碰到一个问题:数据库表中一个记录时间的FIELD是用time_t类型,也就是long类型存储的,需要转换为yyyy-MM-ddHH:mm:ss格式显示到界面上。当初用time_t类型大概是为了提高存取......
  • ASP.NET 向SQLSERVER中批量插入数据
    usingSystem.Data;usingSystem.Diagnostics;usingSystem.Data.SqlClient;stringconnectionString="DataSource=HG-J3EJJ9LSW5PY;InitialCatalog=Test......
  • 《Netty权威指南》之I/O基础入门
    I/O基础入门:​​1.Java的I/O演进​​​​2.NIO入门​​​​2.1BIO通信模型(同步阻塞式I/O)​​​​2.2伪异步I/O编程​​1.Java的I/O演进从JDK1.0到JDK1.3,Java的I/O类......
  • C#中数据的批量插入和更新_Asp.net
    对于海量数据的插入和更新,ADO.NET确实不如JDBC做到好,JDBC有统一的模型来进行批操作.使用起来非常方便: PreparedStatementps=conn.prepareStatement("insertorupd......