0

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

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

class Foo : BaseClass
{
}

我需要代码Foo.GetType()来返回Foo但它返回BaseClass :(
我必须在不使用泛型或初始化实例的情况下获取类型。
我该如何实现这一点?

4

2 回答 2

1

为什么不使用typeof(Foo)?如果没有更多关于您正在做什么的背景信息,看起来应该可以完美运行。

于 2013-07-28T20:52:03.137 回答
1

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

无论如何,你在做什么没有意义;如果你写Foo.GetType()了,你已经知道你想要它返回Foo,所以你可以使用typeof(Foo).

于 2013-07-28T21:48:32.287 回答