静态方法中的GetType

时间:2011-10-20 17:20:17

标签: c# .net reflection

  

可能重复:
  .NET: Determine the type of “this” class in its static method

如何通过GetType()方法访问static

我有这个抽象基类

abstract class MyBase
{
   public static void MyMethod()
   {
      var myActualType = GetType(); // this is an instance method
      doSomethingWith(myActualType);
   }
}

和该类的实现。 (我可以有很多实现。)

class MyImplementation : MyBase 
{
    // stuff
}

如何让myActualType成为typeof(MyImplementation)

3 个答案:

答案 0 :(得分:42)

静态方法中的“type”始终是特定类型,因为没有虚拟静态方法。

在你的情况下,这意味着你可以写:

 var myActualType = typeof(MyBase);

由于MyMethod的“类型”是静态的,因此总是 MyBase的静态方法。

答案 1 :(得分:22)

这个怎么样?

abstract class MyBase<T>
{
   public static void MyMethod()
   {
      var myActualType = typeof(T);
      doSomethingWith(myActualType);
   }
}


class MyImplementation : MyBase<MyImplementation>
{
    // stuff
}

答案 2 :(得分:3)

这是我使用的模式。

abstract class MyBase
{
   public static void MyMethod(Type type)
   {
      doSomethingWith(type);
   }
}