假设我有一个基类TestBase,其中定义了一个虚拟方法TestMe()
class TestBase { public virtual bool TestMe() { } }
现在,我继承该类:
class Test1 : TestBase { public override bool TestMe() {} }
现在,使用反射,我需要确定子类中是否已重写方法TestMe-可以吗?
我需要什么-我正在为“对象”类型编写一个设计器可视化程序,以显示继承的整个层次结构,并还显示哪些虚拟方法在哪个级别被覆盖。
给定类型Test1,您可以确定它是否具有以下 实现 声明TestMe:
Test1
TestMe
typeof(Test1).GetMethod("TestMe").DeclaringType == typeof(Test1)
如果声明来自基本类型,则将得出false。
请注意,由于这是测试声明,而不是true的实现,因此如果它也是抽象的且是抽象的, 则将 返回true ,因为它将具有自己的声明。如果要排除这种情况,请添加Test1``TestMe``Test1``&& !GetMethod("TestMe").IsAbstract
Test1``TestMe``Test1``&& !GetMethod("TestMe").IsAbstract