.net core3.0不通過構造函數注入獲取注入的對象

1.先獲取上下文中IServiceProvidersFeature服務功能
2.獲得請求中的服務對象集合,找到IServiceProvider服務對象
3.從中獲取目標服務

我在項目中遇到的情況舉例:
在一個BaseController中獲取當前用戶的信息,通過構造函數注入可以實現但是增加了子類編碼的負擔,可以通過如下代碼實現

 var serviceProvidersFeature = HttpContext.Features.Get<IServiceProvidersFeature>();
 var services = serviceProvidersFeature.RequestServices;
 var service = (IServiceProvider)services.GetService(typeof(IServiceProvider));
 using var redisClientsManager = (IRedisClientsManager)service.GetService(typeof(IRedisClientsManager));
 using var client = redisClientsManager.GetReadOnlyClient();
 var account = client.Get<AccountInfo>(Token);
 return account;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章