title: Explicit interface implementation limitation
body: <p>I have a very simple scenario : a "<strong>person</strong>" can be a "<strong>customer</strong>" or an "<strong>employee</strong>" of a company.</p>
  
  <p>A "<strong>person</strong>" can be called by phone with the "<strong>Call</strong>" method.</p>
  
  <p>Depending on which role the "<strong>person</strong>" plays in the <strong>context of the call</strong>, e.g. the announcement of a new product or the announcement of a change in organization, we should either use the phone number provided for the "<strong>customer</strong>" role or the one provided for the "<strong>employee</strong>" role.</p>
  
  <p>Here is a sum-up of the situation :</p>
  
  <pre><code>interface IPerson
  {
      void Call();
  }
  
  interface ICustomer : IPerson
  {
  }
  
  interface IEmployee : IPerson
  {
  }
  
  class Both : ICustomer, IEmployee
  {
      void ICustomer.Call()
      {
          // Call to external phone number
      }
  
      void IEmployee.Call()
      {
          // Call to internal phone number
      }
  }
  </code></pre>
  
  <p>But this code doe not compile and produces the errors :</p>
  
  <pre><code>error CS0539: 'ICustomer.Call' in explicit interface declaration is not a member of interface
  error CS0539: 'IEmployee.Call' in explicit interface declaration is not a member of interface
  error CS0535: 'Both' does not implement interface member 'IPerson.Call()'
  </code></pre>
  
  <p><strong>Does this scenario has any chance to be implementable in C# in a different way or will I have to find another design ?</strong></p>
  
  <p><strong>If so what alternatives do you propose ?</strong></p>
  
  <p>Thanks in advance for your help.</p>