title: CSharp virtual method and parameters
body: <pre><code>public abstract class State
  {
  public virtual Enter(/* THIS NEED A PARAMETER */)
  {
  // an empty method
  }
  }
  
  public class PlayerState : State
  {
  public override Enter(Player pl)
  {
  // method implementation
  }
  }
  
  public class GoalkeeperState : State
  {
  public override Enter(Goalkeeper gk)
  {
  // method implementation
  }
  }
  
  //EXAMPLE OF USE
  public State globalState;
  globalState.Enter(owner);
  // OWNER CAN BE PLAYER OR GOALKEEPER
  </code></pre>
  
  <p>I understand that the virtual and overriden methods need to have the same "print". So there is a design flaw here. So is something like this possible. How can I do this ?
  How would you do this?</p>