可能重复:
.NET:在其静态方法中确定"this"类的类型
如何从static
方法访问GetType()
?
我有这个抽象的基类
abstract class MyBase
{
public static void MyMethod()
{
var myActualType = GetType(); // this is an instance method
doSomethingWith(myActualType);
}
}
以及该类的实现。(我可以有很多实现。(
class MyImplementation : MyBase
{
// stuff
}
如何使myActualType
成为typeof(MyImplementation)
?
静态方法中的"类型"始终是特定类型,因为不存在虚拟静态方法。
在你的情况下,这意味着你可以写:
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
}
这是我使用的模式。
abstract class MyBase
{
public static void MyMethod(Type type)
{
doSomethingWith(type);
}
}