亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

ASP.NET Core DI手動獲取注入對象的方法

 更新時間:2018年11月03日 16:24:46   作者:田園里的蟋蟀  
這篇文章主要給大家介紹了關(guān)于ASP.NET Core DI手動獲取注入對象的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

依賴注入簡單介紹:

依賴注入(Dependency injection , DI)是一種實現(xiàn)對象及其合作者或依賴項之間松散耦合的技術(shù)。將類用來執(zhí)行其操作的這些對象以某種方式提供給該類,而不是直接實例化合作者或使用靜態(tài)引用。

ASP.NET Core DI 一般使用構(gòu)造函數(shù)注入獲取對象,比如在ConfigureServices配置注入后,通過下面方式獲?。?/p>

private IValueService _valueService;

public ValueController(IValueService valueService)
{
 _valueService = valueService;
}

那如果手動獲取注入對象呢?

第一種獲取方式(有時會獲取不到,不推薦使用):

var services = new ServiceCollection();
var provider = services.BuildServiceProvider();

var _valueService = provider.GetService<IValueService>();

第二種獲取方式(推薦使用):

public void Configure(IApplicationBuilder app)
{
 ServiceLocator.Instance = app.ApplicationServices;
}

public static class ServiceLocator
{
 public static IServiceProvider Instance { get; set; }
}


public void SomeRandomMethod()
{
 var valueService = ServiceLocator.Instance.GetService<IValueService>();

 // Do something with service
}

補充:需要注意的是,使用ServiceLocator.Instance.GetService<T>(); ,只能獲取AddTransient和AddSingleton注入的對象,而不能獲取AddScoped(請求生命周期內(nèi)唯一)注入的對象,不是不能獲取,而是獲取的和構(gòu)造函數(shù)獲取的不是相同對象,也就是說獲取的對象沒有共享,使用場景比如IUnitOfWork。

那怎么手動獲取請求生命周期內(nèi)的注入對象呢?方法如下:

using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;

namespace Sample.Domain
{
 public class SampleDomainService : IDomainService
 {
  private IUnitOfWork _unitOfWork;

  public SampleDomainService(IHttpContextAccessor httpContextAccessor)
  {
   _unitOfWork = httpContextAccessor.HttpContext.RequestServices.GetService<IUnitOfWork>();
  }
 }
}

IHttpContextAccessor接口在Microsoft.AspNetCore.Http.AbstractionsNuget 程序包下。

參考資料:

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • IP地址與整數(shù)之間的轉(zhuǎn)換實現(xiàn)代碼(asp.net)

    IP地址與整數(shù)之間的轉(zhuǎn)換實現(xiàn)代碼(asp.net)

    把這個整數(shù)轉(zhuǎn)換成一個32位二進制數(shù)。從左到右,每8位進行一下分割,得到4段8位的二進制數(shù),把這些二進制數(shù)轉(zhuǎn)換成整數(shù)然后加上”?!本褪沁@個ip地址了
    2012-09-09
  • asp.net core應用docke部署到centos7的全過程

    asp.net core應用docke部署到centos7的全過程

    這篇文章主要給大家介紹了關(guān)于asp.net core應用docke部署到centos7的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • .NET Core對象池的應用:擴展篇

    .NET Core對象池的應用:擴展篇

    本文主要講解.NET Core對象池的池化集合、池化StringBuilder、ArrayPool<T>以及MemoryPool<T>,需要了解的小伙伴可以多學習這篇文章,相信可以幫助到你
    2021-09-09
  • asp.net 無刷新附件上傳實現(xiàn)方法

    asp.net 無刷新附件上傳實現(xiàn)方法

    一直以來附件上傳都是個很郁悶的問題,剛開始是利用js添加input file 然后一起提交來實現(xiàn)多文件上傳,在使用163郵箱的時候很是羨慕它的附件上傳部分(選擇完文件就提交,可以多個文件一起上傳,而且還可以獲取上傳進度),這時就很想自己也寫個那樣的東西出來。
    2010-01-01
  • 詳解asp.net core重新加載應用配置

    詳解asp.net core重新加載應用配置

    這篇文章主要介紹了asp.net core重新加載應用配置,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • asp.net 讀取配置文件方法

    asp.net 讀取配置文件方法

    asp.net 讀取配置文件方法,需要的朋友可以參考下。
    2011-12-12
  • 淺談VS中的DataPager分頁

    淺談VS中的DataPager分頁

    這篇文章主要介紹了淺談VS中的DataPager分頁的相關(guān)資料和示例,需要的朋友可以參考下
    2015-02-02
  • asp.net中資源文件的使用

    asp.net中資源文件的使用

    .Net是一個豐富的平臺,在它的結(jié)構(gòu)中,程序集Assembly是自我描述的安裝單元,它可以只包括一個PE(可移植可執(zhí)行)格式的Dll或exe文件,也可以由多個文件組成,例如資源、Dll和exe等
    2011-12-12
  • asp.net 點擊按鈕提交后使按鈕變灰不可用

    asp.net 點擊按鈕提交后使按鈕變灰不可用

    asp.net 點擊按鈕提交后使按鈕變灰不可用的實現(xiàn)代碼。
    2009-06-06
  • 某個aspx頁面突然死了連日志也沒有的解決方法

    某個aspx頁面突然死了連日志也沒有的解決方法

    某個aspx頁面突然死了連日志也沒有,朋友提醒event viewer里看看,果然錯誤在那里,有此情況的朋友可以參考下
    2013-08-08

最新評論