title: How to change access modifier without hiding class base variable?
body: <p>I'm trying to extend the Process class a bit, to add access control of Process.Exited delegates and limit them to one. So far, I have this result:</p>
  
  <pre><code>public class ProcessWithData : Process
  {
      public EventHandler CurrentEventHandler { get; private set; }
      public new bool EnableRaisingEvents = true;
      private new EventHandler Exited;
      public void SetHandler(EventHandler eventHandler)
      {
          if (CurrentEventHandler != null) Exited -= CurrentEventHandler;
          CurrentEventHandler = eventHandler;
          Exited += CurrentEventHandler;
      }
  }
  </code></pre>
  
  <p>However, the line</p>
  
  <pre><code>private new EventHandler Exited;
  </code></pre>
  
  <p>overwrites existing EventHandler of Process class being the base. Therefore</p>
  
  <pre><code>var proc = Process.Start("foo.exe");
  ProcessWithData procwithdata = (ProcessWithData)proc;
  </code></pre>
  
  <p>should destroy Exited event handler upon cast.</p>
  
  <p>How could I set <code>private</code> modifier to it without redefining(and destroying) existing instance inside Process class?</p>