3 回答
TA贡献1982条经验 获得超2个赞
TA贡献1872条经验 获得超3个赞
所以可以这样做,
new System.Diagnostics.StackTrace().GetFrame(1).GetMethod().DeclaringType.Name
StackFrame表示调用堆栈上的一个方法,索引 1 为您提供包含当前执行的方法的直接调用者的框架,ApiController.GetMethod()
在此示例中。
现在您有了框架,然后MethodInfo
通过调用检索该框架的StackFrame.GetMethod()
,然后使用 的DeclaringType
属性MethodInfo
来获取定义方法的类型,即ApiController
.
TA贡献1842条经验 获得超12个赞
您可以通过以下代码实现此目的
首先你需要添加命名空间 using System.Diagnostics;
public class OtherClass
{
public void OtherMethod()
{
StackTrace stackTrace = new StackTrace();
string callerClassName = stackTrace.GetFrame(1).GetMethod().DeclaringType.Name;
string callerClassNameWithNamespace = stackTrace.GetFrame(1).GetMethod().DeclaringType.FullName;
Console.WriteLine("This is the only name of your class:" + callerClassName);
Console.WriteLine("This is the only name of your class with its namespace:" + callerClassNameWithNamespace);
}
}
的实例stackTrace取决于您的实现环境。您可以在本地或全局定义它
或者
您可以在不创建StackTrace实例的情况下使用以下方法
public class OtherClass
{
public void OtherMethod()
{
string callerClassName = new StackFrame(1).GetMethod().DeclaringType.Name;
string callerClassNameWithNamespace = new StackFrame(1).GetMethod().DeclaringType.FullName;
Console.WriteLine("This is the only name of your class:" + callerClassName);
Console.WriteLine("This is the only name of your class with its namespace:" + callerClassNameWithNamespace);
}
}
试试这个可能对你有帮助
- 3 回答
- 0 关注
- 227 浏览
添加回答
举报