gpt4 book ai didi

c# - ASP.NET MVC 中的面向方面编程

转载 作者:太空狗 更新时间:2023-10-29 18:22:11 25 4
gpt4 key购买 nike

我目前正在 ASP.NET 中开发一个 MVC 应用程序,我正在尝试分离关注点,以便最终得到更清晰、更易于维护的代码。

因此,作为起点,我想到了日志记录方面。我的想法是(最初)记录每个 Controller 中每个方法的调用和返回。我会将此逻辑放在一个单独的类中,专门用于日志记录,这样我就不会在我的代码中随处可见日志语句。

我还需要访问 Http 请求,以便获取客户信息。

是否有集成的方法来执行此操作? ASP.NET MVC 可以像 Java 中的 AspectJ 一样与方面文件一起使用吗?

此外,以后是否可以将其配置为记录满足特定条件的方法? (如签名、返回值、异常抛出等)

非常感谢!

最佳答案

您可以使用属性 以面向方面的方式实现功能。您想用您的功能包围的操作方法只需要用您的属性装饰:

[CustomLogger]
public ActionResult Index()
{
// Doing something here ...
return View();
}

您可以使用属性、整个 Controller 装饰单个操作方法,甚至可以通过 ASP.NET MVC 的 GlobalFilterCollection 全局应用属性。

这是您声明属性的方式:

public class CustomLoggerAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);

// Here goes your logic
}

// ...
}

ActionFilterAttribute类允许您重写几个方法,以便您可以连接到 ASP.NET MVC 的操作执行管道:

  • OnActionExecuting
  • OnActionExecuted
  • OnResultExecuting
  • OnResultExecuted

您可以通过传递给上述方法的参数(如 ActionExecutedContext)访问请求变量。

关于c# - ASP.NET MVC 中的面向方面编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23244400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com