1 回答

TA貢獻2041條經驗 獲得超4個贊
由于您正在操作過濾器中進行構造函數注入,因此您可以使用ServiceFilter屬性啟用它,您可以在其中傳遞過濾器的類型
[ServiceFilter(typeof(Tracker))]
public IActionResult Index()
{
// to do : return something
}
確保您已在ConfigureServices方法中注冊過濾器
services.AddScoped<Tracker>();
如果要將其他參數傳遞給過濾器,可以更新過濾器構造函數以包含這些參數。
public class Tracker : ActionFilterAttribute
{
private string _actionType { get; set; }
private string _actionName { get; set; }
private readonly ILoggerFactory _logger;
public Tracker(ILoggerFactory logger, string actionType, string actionName)
{
this._logger = logger;
this._actionName = actionName;
this._actionType = actionType;
}
public override void OnActionExecuting(ActionExecutingContext context)
{
base.OnActionExecuting(context);
}
public override void OnActionExecuted(ActionExecutedContext context)
{
base.OnActionExecuted(context);
}
public override void OnResultExecuting(ResultExecutingContext context)
{
base.OnResultExecuting(context);
}
public override void OnResultExecuted(ResultExecutedContext context)
{
base.OnResultExecuted(context);
}
}
并使用TypeFilter屬性來啟用您的過濾器,您可以在其中顯式傳遞參數
[TypeFilter(typeof(Tracker), Arguments = new object[] { "Abc", "Xyz" })]
public IActionResult Index()
{
// to do : return something
}
- 1 回答
- 0 關注
- 196 瀏覽
添加回答
舉報