C#静态"这个"

chi*_*oro 14 c# static this

在C#静态方法中是否有一种方法可以引用定义方法的Type?

在实例方法中,您可以通过以下方式确定类型:

public void Foo()
{
    Type type = this.GetType();
}
Run Code Online (Sandbox Code Playgroud)

它在静态方法中会是什么样子?

public static void Bar()
{
    Type type = ....?
}
Run Code Online (Sandbox Code Playgroud)

更新:对不起,需要澄清:我知道这个typeof(...)功能.我正在寻找一个关键字或代码,它给我类型而不显式引用类名.

更新:除了开发者艺术的答案,这正是我正在寻找的,有一个更简单的方法吗?

小智 23

干得好:

public static void Bar()
{
  Type type = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType;
}
Run Code Online (Sandbox Code Playgroud)

编辑:更新以更正错误 - DeclaringType是一个属性.

  • 作者显然对获取类型没有明确指定其名称感兴趣. (9认同)

m0s*_*0sa 13

public class Foo {
   public static void Bar() {
      Type type = typeof(Foo);
   }
}
Run Code Online (Sandbox Code Playgroud)

您也可以使用堆栈跟踪

public class Foo {
   public static void Bar() {
        Type type = new StackTrace().GetFrame(0).GetMethod().DeclaringType;
   }
}
Run Code Online (Sandbox Code Playgroud)