GetType в статическом методе - программирование

GetType в статическом методе

Возможный дубликат:
.NET: Определите тип класса "this" в его статическом методе

Как я могу сделать 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)?

4b9b3361

Ответ 1

Это шаблон, который я использовал.

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

Ответ 2

"Тип" в статическом методе всегда является конкретным типом, поскольку нет такой вещи, как виртуальный статический метод.

В вашем случае это означает, что вы можете просто написать:

 var myActualType = typeof(MyBase);

Так как "тип" MyMethod, являющийся статичным, всегда является статическим методом MyBase.

Ответ 3

Как насчет этого?

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


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