可能重复:
.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)
?
答案 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);
}
}