测试虚方法是否被覆盖
Test whether virtual method has been overridden
我知道这是个坏主意,但我有一个 class 基础 很多 虚方法 A()、B()、C()和一组匹配的 getters bool SupportsA(), bool supportsB(), ...
想法是实现者只想为一小部分虚拟方法提供功能,我想免除他们重写关联 getter 的责任。有没有办法从基础 class 判断(可能不止一个)subclasses 的 any 是否覆盖了特定方法?请注意,这些 classes 可能在不同的程序集中定义,所以我不知道类型。
public class
{
public bool SupportsA
{
get { return (A == overridden); }
}
public virtual void A()
{
// Null default implementation.
}
}
已经有一些类似的问题,但他们似乎假设基类型和派生类型在编译时都是已知的。
public class BaseClass
{
public bool SupportsA
{
get { return (this.GetType().GetMethod("A").DeclaringType == typeof(BaseClass)); }
}
public virtual void A()
{
// Null default implementation.
}
}
我知道这是个坏主意,但我有一个 class 基础 很多 虚方法 A()、B()、C()和一组匹配的 getters bool SupportsA(), bool supportsB(), ...
想法是实现者只想为一小部分虚拟方法提供功能,我想免除他们重写关联 getter 的责任。有没有办法从基础 class 判断(可能不止一个)subclasses 的 any 是否覆盖了特定方法?请注意,这些 classes 可能在不同的程序集中定义,所以我不知道类型。
public class
{
public bool SupportsA
{
get { return (A == overridden); }
}
public virtual void A()
{
// Null default implementation.
}
}
已经有一些类似的问题,但他们似乎假设基类型和派生类型在编译时都是已知的。
public class BaseClass
{
public bool SupportsA
{
get { return (this.GetType().GetMethod("A").DeclaringType == typeof(BaseClass)); }
}
public virtual void A()
{
// Null default implementation.
}
}