记录是否输入任何功能

时间:2016-10-13 22:49:16

标签: c# winforms

我有一个WinForms应用程序,我想跟踪点击的按钮。我想我可以在每个函数的开头添加类似^\s*$[\r\n]*的东西(当然,FUNCTION_NAME替换为实际函数的名称)。我的问题是:有更好的方法吗?在函数运行时获取函数名称并用它做某事的某种编程方式?

2 个答案:

答案 0 :(得分:0)

有一种方法。使用CallerMemberNameAttribute。例: https://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.callermembernameattribute(v=vs.110).aspx#Anchor_7

修改

以下是C#中AOP的示例: https://msdn.microsoft.com/en-us/magazine/dn574804.aspx

但性能会严重下降。

答案 1 :(得分:0)

通常,在WPF / MVVM中,我们将为使用CallerMemberNameAttribute的记录器设置一个基类,因此您无需弄清楚调用者。
您可以使用记录器(NLog,Log4net等)而不是写出来,如果您在类中创建记录器,它也会自动执行部分工作。

这是一个片段。请注意,这是针对自动更改通知执行的,但您可以将其用于您的目的:

[NotifyPropertyChangedInvocator]
protected override void RaisePropertyChanged([CallerMemberName]string property = "")
{
    base.RaisePropertyChanged(property);
}

显然只需更改功能名称,并在其中执行所需操作。