成人免费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-17 09:45:31

LazyCacheWindows

2021-02-06 21:40:13

SignalR通訊TypeScript

2021-02-02 16:19:08

Serilog日志框架

2021-03-10 09:40:43

LamarASP容器

2021-02-28 20:56:37

NCache緩存框架

2021-02-03 13:35:25

ASPweb程序

2021-01-28 22:39:35

LoggerMessa開源框架

2021-01-07 07:39:07

工具接口 Swagger

2021-03-03 22:37:16

MediatR中介者模式

2021-02-07 17:29:04

監視文件接口

2021-06-22 16:59:56

微軟.NETC# 軟件開發

2021-01-26 14:57:00

中間件應用模塊化

2021-04-12 07:03:10

輕量級模塊化框架

2021-01-04 05:44:54

框架日志

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格式化日期

2021-11-01 14:52:38

ElasticSear索引SQL

2021-02-17 08:51:55

cookie身份驗證
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品不卡 | 自拍视频国产 | 日韩精品一区二区三区四区视频 | 精品视频久久久久久 | 国产精品99久久久久久宅男 | 91国内精品久久 | 国产免费一区二区 | 国产一级片免费在线观看 | 久久国内精品 | 99热播精品 | 亚洲精品一区二区三区免 | 成年人国产在线观看 | 在线视频 亚洲 | 91毛片在线看 | 成人性生交a做片 | 91亚洲精品久久久电影 | www.久久99 | 国产一区不卡 | 国产一区二区自拍 | 一区二区三区视频在线 | 免费在线观看一区二区三区 | 日本韩国欧美在线观看 | 国产一区高清 | 国产一区二区视频在线 | 日韩国产一区二区三区 | av中文字幕在线 | 中文字幕亚洲免费 | 欧美一级视频免费看 | 一区二区三区视频在线 | 天天干天天爱天天爽 | 黄网站涩免费蜜桃网站 | 日韩电影一区二区三区 | 亚洲va欧美va天堂v国产综合 | 国产欧美日韩一区二区三区在线观看 | 国产精品久久久久久av公交车 | 久久久久一区 | 56pao在线 | 久久99久久99精品免视看婷婷 | 视频在线观看一区 | 97伦理电影网 | 超碰在线亚洲 |