当一个应用程序启动时,我需要知道它们被触发时的某些方法。如何使用属性和AOP技术做到这一点?
最简单的方法是在事件方法中记录时间,例如:
private void Page_load()
{
DateTime dt = DateTime.Now;
}
并将Datetime保存到数据库中。但这绝对不可取,因为这样做会使该方法产生很多交叉功能,使维护工作更加困难。我正在考虑使用属性来解决这个问题。 PostSharp似乎是一个很好的候选者,因为它可以拦截方法调用,并做任何你想要的前后处理。但有一点显然缺乏的是,如果没有编写大量自定义代码,它就无法处理事件。
是否有任何框架可以自然处理事件?
答案 0 :(得分:2)
Postsharp可能会帮助你
答案 1 :(得分:1)
对于您想要记录的每个事件,您都不需要单独的方法。
编写一个方法来执行日志记录:
public static void LogEventRaised(string event)
{
...
}
然后使用匿名方法订阅事件:
Load += delegate { LogEventRaised("Load") };
是的,这是必要的而不是声明性的,并重复事件名称 - 但它仍然非常紧凑。您可以使用反射将处理程序附加到所有事件,但这可能是过度的。
答案 2 :(得分:1)
Spring框架具有面向方面编程模块,可提供日志记录支持。