c# - 测试一个方法是否被覆盖?

标签 c# reflection oop system.reflection

<分区>

Possible Duplicate:
Detect if a method was overridden using Reflection (C#)

有没有办法判断一个方法是否被覆盖?例如

public class Foo
{
    public virtual void DoSomething() {}
    public virtual int GimmeIntPleez() { return 0; }
}

public class BabyFoo: Foo
{
    public override int GimmeIntPleez() { return -1; }
}

是否可以反射(reflect) BabyFoo 并判断 GimmeIntPleez 是否是覆盖?

最佳答案

针对 MethodInfo.GetBaseDefinition() 进行测试。如果函数是重写,它将返回基类中的不同方法。如果不是,将返回相同的方法对象。

When overridden in a derived class, returns the MethodInfo object for the method on the direct or indirect base class in which the method represented by this instance was first declared.

关于c# - 测试一个方法是否被覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3055926/

相关文章:

c# - WPF 上的嵌套网格问题

c# - 如何在 C++ 中创建 dll 以便在 C# 中使用

java - 是否有可能以某种方式克服 Java 中的类型删除?

具有多个初始化方法的 Python 子类?

C# Pop3 DeleteMessage 不删除电子邮件

c# - Asp.net 中的 JavaScript,C#

java - java 如何从实例字段获取对象?

java - 如何创建所有子类的实例

php - 在 PHP 中从用户输入自动加载所需的类

javascript - 在嵌套类对象上定义属性