gpt4 book ai didi

c# - 如何获取包含调用当前方法的方法的类的名称?

转载 作者:IT王子 更新时间:2023-10-29 04:33:25 24 4
gpt4 key购买 nike

我有一个要求,我需要知道类的名称 (ApiController),它有一个方法 (GetMethod),该方法由另一个方法 (>OtherMethod) 来自不同的类 (OtherClass)。

为了帮助解释这一点,我希望下面的伪代码片段能有所帮助。

ApiController.cs

public class ApiController
{
public void GetMethod()
{
OtherMethod();
}
}

其他类.cs

public class OtherClass()
{
public void OtherMethod()
{
Console.WriteLine(/*I want to get the value 'ApiController' to print out*/)
}
}

我尝试过的:

最佳答案

using System.Diagnostics;

var className = new StackFrame(1).GetMethod().DeclaringType.Name;

转到Stack的上一层,找到方法,从方法中获取类型。 这避免了您需要创建一个完整的 StackTrace,这是昂贵的。

如果你想要完全限定的类名,你可以使用 FullName

编辑:边缘案例(突出下面评论中提出的问题)

  1. 如果启用了编译优化,调用方法可能会被内联,因此您可能无法获得预期的值。 (来源:Johnbot)
  2. async 方法被编译到一个状态机中,所以同样,您可能不会得到您期望的结果。 (来源:Phil K)

关于c# - 如何获取包含调用当前方法的方法的类的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51606042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com