Ответ 1
Это шаблон, который я использовал.
abstract class MyBase
{
public static void MyMethod(Type type)
{
doSomethingWith(type);
}
}
Возможный дубликат:
.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)
?
Это шаблон, который я использовал.
abstract class MyBase
{
public static void MyMethod(Type type)
{
doSomethingWith(type);
}
}
"Тип" в статическом методе всегда является конкретным типом, поскольку нет такой вещи, как виртуальный статический метод.
В вашем случае это означает, что вы можете просто написать:
var myActualType = typeof(MyBase);
Так как "тип" MyMethod
, являющийся статичным, всегда является статическим методом MyBase
.
Как насчет этого?
abstract class MyBase<T>
{
public static void MyMethod()
{
var myActualType = typeof(T);
doSomethingWith(myActualType);
}
}
class MyImplementation : MyBase<MyImplementation>
{
// stuff
}