我正在尝试从基类中定义的静态方法中获取派生类类型 结构如下:
class BaseClass
{
public static Type GetType()
{
return MethodBase.GetCurrentMethod().GetType();
}
}
class Foo : BaseClass
{
}
我需要代码Foo.GetType()
才能返回 Foo ,但它会返回 BaseClass :(
我必须在不使用泛型或初始化实例的情况下获取类型
我怎样才能做到这一点?
答案 0 :(得分:1)
为什么不使用typeof(Foo)
?没有关于你正在做什么的更多背景,看起来应该完美无缺。
答案 1 :(得分:1)
由于Foo
未重新声明GetType
,Foo.GetType()
实际上与BaseClass.GetType()
的方法相同。因此,当您编写Foo.GetType()
时,编译器会发出对BaseClass.GetType()
的调用,因为BaseClass
是实际实现该方法的类型。
无论如何,你所做的事情没有意义;如果你写Foo.GetType()
,你已经知道要让它返回Foo
,所以你可以使用typeof(Foo)
。