成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何在 ASP.NET Core 中使用 FromServices

開發 前端

ASP.NET Core 中內置了對依賴注入的支持,可以使用 依賴注入 的方式在運行時實現組件注入,這樣可以讓代碼更加靈活,測試和可維護,通常有三種方式可以實現依賴注入。

構造函數注入

屬性注入

方法注入

構造函數 這種注入方式在 ASP.NET Core 中應用的是最廣的,可想而知,只用這種方式也不是 放之四海而皆準 ,比如說,我不希望每次 new class 的時候都不得不注入,換句話說,我想把依賴注入的粒度縮小,我希望只對某一個或者某幾個方法單獨實現注入,而不是全部,首先這能不能實現呢?實現肯定是沒有問題的,只需用 FromServices 特性即可,它可以實現對 Controller.Action 單獨注入。

這篇文章我們將會討論如何在 ASP.NET Core 中使用 FromServices 特性實現依賴注入,同時我也會演示最通用的 構造函數注入 。

使用構造函數注入接下來先通過 構造函數 的方式實現依賴注入,考慮下面的 ISecurityService 接口。

public interface ISecurityService { bool Validate(string userID, string password); } public class SecurityService : ISecurityService { public bool Validate(string userID, string password) { //Write code here to validate the user credentials return true; } }

要想實現依賴注入,還需要將 SecurityService 注入到 ServiceCollection 容器中,如下代碼所示:

// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddTransient(); services.AddControllersWithViews(); }

下面的代碼片段展示了如何通過 構造函數 的方式實現注入。

public class HomeController : Controller { private readonly ILogger _logger; private readonly ISecurityService _securityService; public HomeController(ILogger logger, ISecurityService securityService) { _logger = logger; _securityService = securityService; } public IActionResult Index() { var isSuccess = _securityService.Validate(string.Empty, string.Empty); return View(); } }

FromServicesAttribute 簡介FromServicesAttribute 特性是在 Microsoft.AspNetCore.Mvc 命名空間下,通過它可以直接將service注入到action方法中,下面是 FromServicesAttribute 的源碼定義:

[AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = true)] public class FromServicesAttribute : Attribute, IBindingSourceMetadata { public FromServicesAttribute(); public BindingSource BindingSource { get; } }

使用 FromServices 依賴注入接下來將 FromServices 注入到 Action 方法參數上,實現運行時參數的依賴解析,知道這些基礎后,現在可以把上一節中的 構造函數注入 改造成 FromServices注入,如下代碼所示:

public class HomeController : Controller { private readonly ILogger _logger; public HomeController(ILogger logger) { _logger = logger; } public IActionResult Index([FromServices] ISecurityService securityService) { var isSuccess = securityService.Validate(string.Empty, string.Empty); return View(); } }

圖片

總的來說,如果你只想在某些Action上而不是整個 Controller 中使用依賴注入,那么使用 FromServices 將是一個非常好的選擇,而且還可以讓你的代碼更加干凈,更加可維護。

譯文鏈接:https://www.infoworld.com/article/3451821/how-to-use-the-fromservices-attribute-in-aspnet-core.html

 

責任編輯:武曉燕
相關推薦

2021-03-10 09:40:43

LamarASP容器

2021-02-03 13:35:25

ASPweb程序

2021-02-28 20:56:37

NCache緩存框架

2021-03-03 22:37:16

MediatR中介者模式

2021-01-28 22:39:35

LoggerMessa開源框架

2021-01-07 07:39:07

工具接口 Swagger

2021-03-17 09:45:31

LazyCacheWindows

2021-02-02 16:19:08

Serilog日志框架

2021-02-06 21:40:13

SignalR通訊TypeScript

2021-02-07 17:29:04

監視文件接口

2021-01-26 14:57:00

中間件應用模塊化

2021-04-12 07:03:10

輕量級模塊化框架

2021-01-04 05:44:54

框架日志

2021-06-22 16:59:56

微軟.NETC# 軟件開發

2017-10-20 08:52:11

內存緩存并發模式Linux

2022-08-01 08:00:00

開發工具跟蹤偵聽器

2009-02-05 14:02:46

SmtpMail發送郵件ASP.NET

2021-04-14 07:35:12

Json格式化日期

2009-03-30 10:34:03

ASP.NETMySQL

2021-11-01 14:52:38

ElasticSear索引SQL
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一级片网站 | 国产在线精品一区二区三区 | 男人电影天堂 | 国产精品成人一区 | www.99精品| 国产 日韩 欧美 制服 另类 | 色综久久 | 黄色精品| 国产黄色av网站 | 亚洲精品一二区 | 人人九九精| 看片91 | 国产亚洲精品区 | 91久久久久久久久久久 | 久久影院一区 | 91精品无人区卡一卡二卡三 | www.亚洲| 久久久亚洲一区 | 中国毛片免费 | 自拍偷拍小视频 | 久久av网站| 亚洲有码转帖 | 久久国产亚洲 | 91视频在线看 | 国产真实精品久久二三区 | 99精品热视频 | 黄色小视频入口 | 亚洲成人网在线 | 日本福利视频免费观看 | 特一级毛片 | 伊人二区 | 亚洲成人精品 | 一级毛片视频免费观看 | 国产欧美精品区一区二区三区 | 国产精品国产三级国产aⅴ浪潮 | 欧美1—12sexvideos | 日韩中文字幕一区 | 精品国产一区二区三区性色av | 国产特级毛片aaaaaa | 91精品国产91久久久久福利 | 四虎海外 |