我有一个班级
public class ApplicationClass
{
public ApplicationClass()
{
// Some code here
public bool Check()
{
// some code here
}
}
}
我在点击事件中调用Check
函数
protected void CheckFunction_Click(object sender, EventArgs e)
{
new ApplicationClass().Check();
}
现在在ApplicationClass
构造函数中,我想获取有关被调用函数名称和参数(如果有)Check
函数的信息。
我如何获得这些细节?
我想保存所有被调用的函数。我可以将它放在一个地方,而不是将调用功能放在每个功能上吗? 它不一定必须在构造函数内部。
答案 0 :(得分:3)
这是不可能的。也许它看起来像是因为符号。这是您的代码扩展到:
protected void CheckFunction_Click(object sender, EventArgs e)
{
var temp = new ApplicationClass();
temp.Check();
}
如果你只是想在不需要实例的情况下调用类的方法,你可能想要使用静态方法 - 至少你的例子看起来像它。当然,初始化必须在别处或静态构造函数中完成。静态构造函数只调用一次!
public static bool Check()
{
// some code here
}
ApplicationClass.Check();
如果您需要有关调用当前方法的方法的信息,可以使用。
System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace();
请注意,获取堆栈跟踪可能会被认为很慢,不应在循环或性能关键代码中使用。
答案 1 :(得分:2)
这是不可能的。如果是相反的方式,你可以使用StackTrace
类来检查被调用的内容,但正如所说的那样,现在情况并非如此。 (如果你先调用Check
,它就会出现在堆栈上)
您可以选择使用Expression
或LamdbaExpression
类来检索通话信息。
查看Get the name of a method using an expression的问题和答案,了解表达式如何方便。