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

时间:2013-07-28 19:12:42

标签: c# reflection

我正在尝试从基类中定义的静态方法中获取派生类类型 结构如下:

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

class Foo : BaseClass
{
}

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

2 个答案:

答案 0 :(得分:1)

为什么不使用typeof(Foo)?没有关于你正在做什么的更多背景,看起来应该完美无缺。

答案 1 :(得分:1)

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

无论如何,你所做的事情没有意义;如果你写Foo.GetType(),你已经知道要让它返回Foo,所以你可以使用typeof(Foo)