title: Overriding explicit interface implementations?
body: <p>What is the proper way to override explicit implementations of an interface in a child class?</p>
  
  <pre><code>public interface ITest
  {
      string Speak();
  }
  
  public class ParentTest : ITest
  {
      string ITest.Speak()
      {
          return "Meow";
      }
  }
  
  public class ChildTest : ParentTest
  {
      // causes compile time errors
      override string ITest.Speak()
      {
          // Note: I'd also like to be able to call the base implementation
          return "Mooo" + base.Speak();
      }
  }
  </code></pre>
  
  <p>The above is a best guess for the syntax, but obviously it's wrong. It causes the following compile time errors:</p>
  
  <h3>error CS0621:</h3>
  
  <blockquote>
    <p>`ChildTest.ITest.Speak()': virtual or abstract members cannot be
    private</p>
  </blockquote>
  
  <h3>error CS0540:</h3>
  
  <blockquote>
    <p><code>ChildTest.ITest.Speak()': containing type does not implement
    interface</code>ITest'</p>
  </blockquote>
  
  <h3>error CS0106:</h3>
  
  <blockquote>
    <p>The modifier `override' is not valid for this item</p>
  </blockquote>
  
  <p>I can actually get this to work without using explicit interfaces so it's not actually blocking me but I would really like know, for my own curiosity, <strong>what is the correct syntax if wanted to do this with explicit interfaces?</strong></p>