代码之家  ›  专栏  ›  技术社区  ›  chiccodoro

C静态“this”

  •  14
  • chiccodoro  · 技术社区  · 15 年前

    C静态方法中是否有方法引用方法定义的类型?

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

    public void Foo()
    {
        Type type = this.GetType();
    }
    

    在静态方法中它看起来如何?

    public static void Bar()
    {
        Type type = ....?
    }
    

    更新:抱歉,需要澄清: 我知道 typeof(...) 特征。我正在寻找一个关键字或代码,它给了我一个没有显式引用类名的类型。

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

    7 回复  |  直到 9 年前
        1
  •  23
  •   Peter T. LaComb Jr.    15 年前

    public static void Bar()
    {
      Type type = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType;
    }
    

        2
  •  13
  •   m0sa    15 年前
    public class Foo {
       public static void Bar() {
          Type type = typeof(Foo);
       }
    }
    

    public class Foo {
       public static void Bar() {
            Type type = new StackTrace().GetFrame(0).GetMethod().DeclaringType;
       }
    }
    
        3
  •  4
  •   Grozz    15 年前
    class ClassA
    {
        public static void Bar()
        {
            Type t = typeof(ClassA);
        }
    }
    

        4
  •  2
  •   Julien Hoarau    15 年前

    typeof

    public class Foo
    {
      public static void Bar()
      {
        Type type = typeof(Foo);
      }
    }
    

    using System.Reflection;
    public class Foo
    {
      public static void Bar()
      {
        Type type = MethodBase.GetCurrentMethod().DeclaringType();
      }
    }
    
        5
  •  1
  •   Sascha    15 年前

     Type t = typeof ( Program );
    

        6
  •  1
  •   Steven    15 年前

    public class Foo
    {
        private static Foo _Instance = new Foo();
        public static Type Bar()
        {
            return _Instance.GetType();
        }
    }
    
        7
  •  0
  •   Baz Guvenkaya    9 年前

    Application.OpenForms["MainForm"].GetType();