我知道这是一个坏主意,但我有一个基类很多的虚拟方法a (), B(), C()和一组匹配的getter bool SupportsA(), bool supportsB(),…
这个想法是,实现者只希望为一小部分虚方法提供功能,我希望减轻他们覆盖相关getter的责任。是否有一种方法可以从基类中判断是否有任何(可能不止一个)子类重写了特定的方法?注意,这些类可能在不同的程序集中定义,所以我不知道类型。
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.
}
}