加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何检测虚拟方法是否覆盖c#

发布时间:2020-12-15 03:56:28 所属栏目:百科 来源:网络整理
导读:这个问题在这里已经有一个答案: Detect if a method was overridden using Reflection (C#)7个 是否可以确定虚拟方法是否已被覆盖: class ABase { public void DoSomething(object p) { p.Process(); if( /* DoSomethingExtra is implemented */ ) DoSomet
这个问题在这里已经有一个答案:> Detect if a method was overridden using Reflection (C#)7个
是否可以确定虚拟方法是否已被覆盖:
class ABase {

  public void DoSomething(object p)
  {
    p.Process();
    if( /* DoSomethingExtra is implemented */ )
      DoSomethingExtra(p);
  }
  public virtual void DoSomethingExtra(object p) { }

}

class ADerived {
  public override void DoSomethingExtra(object p)
  {
    p.ProcessMore();
  }
}

我意识到这个例子似乎很愚蠢(例如,为什么你不叫DoSomethingExtra(),因为它不做任何事情).我向你保证,我有合法的情况.有任何想法吗?

解决方法

检查这个 Detect if a method was overridden using Reflection (C#)

反射将是在运行时执行此操作的唯一方法.这应该带有健康警告,但从OOP的角度来看,应该被认为是一个非常糟糕的想法(tm).基类通常不应该知道或关心派生类的实现方式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读