title: call base class method *WITHOUT* using override
body: <p>I'm trying to figure out how to do something with c# that I've noticed in particular the Unity 
  engine does. it seems like some form of implementation or subclassing but as I don't have the source I don't know.</p>
  
  <p>in Unity all of the scripts do like this:</p>
  
  <pre><code>class someclass : MonoBehavior
  {
  }
  </code></pre>
  
  <p>now there is a list of functions you can use that the engine via this MonoBehavior calls in your classes such as</p>
  
  <pre><code>void OnGUI()
  {
    so something here
  }
  </code></pre>
  
  <p>so if you have say 5 scripts that all contain the OnGUI function it gets called in all 5 scripts</p>
  
  <p>I want to implement this type of thing myself but I can't figure this out.</p>
  
  <p>How do you write a Base class or Implementation or whatever this is that calls pre-defined functions in your sub classes but does not <em>require</em> the subclass to the functions and without having to use override in them ?</p>
  
  <p>here is an example source file from unity Engine:</p>
  
  <pre><code>public class EnemyAttack : MonoBehaviour {
      // Use this for initialization
      void Start () {
          AttackTimer = 0;
          CoolDown = 2.0f;
       }
       // Update is called once per frame
       void Update () {
           if (AttackTimer &gt; 0) AttackTimer -= Time.deltaTime;
           if (AttackTimer &lt; 0) AttackTimer = 0;
  
           if (AttackTimer == 0){
               Attack();
               AttackTimer = CoolDown;
            }
      }
  }
  </code></pre>
  
  <p>that code works perfectly and then engine calls start at first startup (single call) and calls Update <em>every</em> frame notice absolutely NO override is in that code anywhere</p>
  
  <p>it sems to be some sort of event system but I can't find anything on google that describes how to do this.</p>