在C#中,自定義過濾器通常是通過創建一個實現特定接口的類來完成的。這里以ASP.NET Core MVC為例,介紹如何創建一個自定義過濾器。
IActionFilter
接口。這個接口包含兩個方法:OnActionExecuting
和OnActionExecuted
。你可以根據需要實現這兩個方法。using Microsoft.AspNetCore.Mvc.Filters;
public class CustomFilter : IActionFilter
{
public void OnActionExecuting(ActionExecutingContext context)
{
// 在 action 方法執行之前執行的代碼
}
public void OnActionExecuted(ActionExecutedContext context)
{
// 在 action 方法執行之后執行的代碼
}
}
在OnActionExecuting
方法中,你可以訪問ActionExecutingContext
對象,它包含有關當前請求的信息,如控制器、操作名稱、參數等。你可以在這里執行一些驗證或者授權邏輯。
在OnActionExecuted
方法中,你可以訪問ActionExecutedContext
對象,它包含有關已執行的操作的信息,如返回值、異常等。你可以在這里執行一些日志記錄或者處理異常的邏輯。
要使用自定義過濾器,只需將其添加到控制器或操作方法上,使用[CustomFilter]
屬性即可。
[CustomFilter]
public class HomeController : Controller
{
// ...
}
或者,你可以將過濾器添加到全局過濾器列表中,這樣它將應用于所有控制器和操作。在Startup
類的ConfigureServices
方法中添加以下代碼:
services.AddControllersWithViews(options =>
{
options.Filters.Add(new CustomFilter());
});
這樣,你就創建了一個自定義過濾器,并將其應用于ASP.NET Core MVC項目中。你可以根據需要修改OnActionExecuting
和OnActionExecuted
方法中的邏輯,以實現你的需求。