︿
Top
顯示具有 ASP.NET Core 6 標籤的文章。 顯示所有文章
顯示具有 ASP.NET Core 6 標籤的文章。 顯示所有文章

2024年2月1日 星期四

如何在 ASP.NET Core 6 MVC 撰寫具有 相依注入(DI) 的自訂屬性 (Custom Attribute)

How to write Custom Attribute with DI in ASP.NET Core 6 MVC

前言

由於 ASP.NET Core 6 MVC 專案採用 DI (Dependency Injection) 的方式, 有一些相關的 自訂屬性 (Custom Attribute) 也想採用 DI.

原本程式碼是在 MyLogAttribute 裡面自行 new Logger(), 在套用屬性時, 是用 [MyLogAttribute]; 改採 DI 後, 變成建構子要傳入 ILogger 的參數, 在 HomeController 的 Index() method, 要改成以下的方式, 但編譯會出現 CS0181 及 CS0120 的編譯錯誤.

[MyLogAttribute(_logger)]
public IActionResult Index() {
    return View();
}

參考文件1.. 為 CS0181 的說明, 它提到自訂屬性傳入的參數, 不可以是物件變數, 必須為常數值.
本文主要採 參考文件2.. 的方法2 (ServiceFilter) 進行演練及實作.

完整範例可由 GitHub 下載.

2023年2月15日 星期三

ASP.NET Core 6 MVC 相依性注入之物件生命週期範例

An example for DI instance lifetime in ASP.NET Core 6 MVC

前言

在 ASP.NET Core 6 的開發框架下, 相依性注入 (Dependency Injection) 是跟以往 ASP.NET MVC 5 有很大不同的其中一項技術.

本篇文章, 主要是模仿參考文件 [1] 的範例, 進行演練.

在經由演練之後, 對於 ASP.NET Core 6 MVC 內建的 DI Container 套件, 也多了一份認識.

原始程式可參考 GitHub 的連結