如何在 Winform 应用程序控制台应用程序或 C# 中的任何 Class 方法中使用操作过滤器

How to Use Action Filter in Winform App Console app OR any Class Method in C#

我想记录任何方法执行开始和完成的时间。 所以在 MVC 中,我可以使用动作过滤器,但我想在控制台应用程序和 Winform 应用程序中实现同样的事情,我已经检查过有 Postsharp,就像 NuGet 包一样,但我不想使用它。

那么有没有其他方法可以实现这种东西?

首先您需要创建一个 class 并从 ActionFilterAttribute 扩展它。现在它有四种方法,如下所示。您可以根据需要跳过或实现这些方法中的任何一个

OnActionExecuted(ActionExecutedContext) Called after the action method executes.

OnActionExecuting(ActionExecutingContext) Called before the action method executes.

OnResultExecuted(ResultExecutedContext) Called after the action result executes.

OnResultExecuting(ResultExecutingContext) Called before the action result executes.

   public class GenerateLogsAttribute : ActionFilterAttribute
            {
    //excuted after actionmethod returns
                public override void OnResultExecuted(ResultExecutedContext filterContext)
                {
                   //this code will execute when actionmethod has returned
                }
      public override void OnActionExecuting(ResultExecutedContext filterContext)
                {
                   //this code will start running before action methods start execute
                }
            }

现在你已经用自定义 actionfilter 的属性(不包括属性词)装饰了你的 actionmethod,在我们的例子中它将是

  [GenerateLogs]
  public IActionResult YourMethod(){//your code}

在控制台应用程序中,您可以创建三个方法

  1. 您想 运行 在您的方法之前 (BeforeExecute)

  2. 你想运行在你的方法之后(AfterExecute)

  3. 包含按此顺序调用方法 beforeexecute() yourmethod() afterexecute()

     public string AnotherFunction()
     {
     BeforeExecuting(); //code that you want to run before method start
     YourMethod(); // your actual code
     AfterExecuting(); // code that you want to run after methods has 
     returned
     }