从静态方法(在基类上)获取类类型

本文关键字:获取 类型 基类 静态方法 | 更新日期: 2023-09-27 18:25:11

我正试图从基类中定义的静态方法中获取派生类类型
结构看起来像:

class BaseClass
{
    public static Type GetType()
    {
        return MethodBase.GetCurrentMethod().GetType();
    }
}
class Foo : BaseClass
{
}

我需要代码Foo.GetType()来返回Foo,但它返回BaseClass:(
我必须在不使用泛型或初始化实例的情况下获取类型
我怎样才能做到这一点?

从静态方法(在基类上)获取类类型

为什么不使用typeof(Foo)?如果没有更多关于你正在做什么的上下文,看起来这应该是完美的。

由于Foo不重新声明GetType,因此Foo.GetType()实际上与BaseClass.GetType()是相同的方法。因此,当您编写Foo.GetType()时,编译器会发出对BaseClass.GetType()的调用,因为BaseClass是实际实现该方法的类型。

不管怎样,你所做的没有意义;如果你写Foo.GetType(),你已经知道你希望它返回Foo,所以你可以只使用typeof(Foo)