登录C#时,如何学习调用当前方法的方法的名称?我知道所有这些System.Reflection.MethodBase.GetCurrentMethod()
,但我想在堆栈跟踪中向下迈出一步.我考虑过解析堆栈跟踪,但我希望找到一种更清晰,更明确的方法,比如Assembly.GetCallingAssembly()
方法.
我正在解决在基类中处理鼠标事件的问题.由于断点不能很好地解决鼠标事件的故障,我想在事件处理程序中添加一些调试输出.但是,对于我来说,在调试信息中包含实际派生类的名称非常重要,因为基类中的事件处理代码由大量派生类共享,并且只有某些派生类出现问题.
我试过使用this.GetType().Name
但这只是返回base
类的类型.我当然可以开始修改类,比如说,将派生类传递type
给它可以存储它的基类构造函数,但这显然只是一个临时需要的很多变化.有没有一种简单的方法从基类中获取派生类的类型?
我有一个要求,我需要知道类的名称(ApiController),它有一个方法(GetMethod),由另一个类(OtherClass)的另一个方法(OtherMethod)调用.
为了帮助解释这一点,我希望下面的伪代码片段有所帮助.
public class ApiController
{
public void GetMethod()
{
OtherMethod();
}
}
Run Code Online (Sandbox Code Playgroud)
public class OtherClass()
{
public void OtherMethod()
{
Console.WriteLine(/*I want to get the value 'ApiController' to print out*/)
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试过的:
[CallerMemberName]
并使用StackTrace
属性,但这些没有得到方法的类名