Overriding explicit interface implementations?
<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>