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

c# – 当调用派生类中的方法时,是否有可能通知基类?

发布时间:2020-12-15 23:28:06 所属栏目:百科 来源:网络整理
导读:考虑以下小设计: public class Parent{ public event EventHandler ParentWentOut; public virtual void GoToWork() { ParentWentOut(); }}public class Mother : Parent{ public override void GoToWork() { // Do some stuff here base.GoToWork(); // -
考虑以下小设计:

public class Parent
{
  public event EventHandler ParentWentOut;
  public virtual void GoToWork()
  {
     ParentWentOut();
  }
}

public class Mother : Parent
{
   public override void GoToWork()
   {
     // Do some stuff here
     base.GoToWork(); // <- I don't want to write this in any derived class. 
                      //    I want base class's method to be automatically called.
   }
}

有没有任何机制可以隐式地自动调用Parent.GoToWork方法,只要这个方法在后代的重写版本(这里是Mother类)中完成?

如果有其他语言而不是C#能够这样做,我将非常感谢知道.

解决方法

你可以尝试实现这样的东西

public class Parent
{
   public event EventHandler ParentWentOut;
   public void GoToWork()
   {
     BeforeParentWentOut();
     ParentWentOut();
     AfterParentWentOut();         
   }

   protected virtual void BeforeParentWentOut()
   {
      // Dont do anything,you can even make it abstract if it suits you
   }

   protected virtual void AfterParentWentOut()
   {
      // Dont do anything,you can even make it abstract if it suits you
   }
}



public class Mother : Parent
{
   protected override void BeforeParentWentOut()
   {
      // Do some stuff here
   }
}

您也可以在Mother类上订阅自己的活动并对此作出反应.

编辑:更新为受保护,添加之前/之后的方法来处理何时向父实现添加代码

(编辑:李大同)

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

    推荐文章
      热点阅读