title: Multiple inheritance, How to avoid manual inherence by copy past and maintenance?
body: <p>My  WCF Web Service library expose 2 services on differents endpoints:</p>
  
  <pre><code>public interface ICommons
  {
      string Common();
  }
  
  public interface IFooA : ICommons
  {
      string SayFooA();
  }
  
  public interface IFooB : ICommons
  {
      string SayFooB();
  }
  </code></pre>
  
  <p>And their respectives implementations:</p>
  
  <pre><code>public class Commons : ICommons
  {
      public string Common() =&gt; "Common";
  }
  public class A : Commons, IFooA
  {
      public string SayFooA() =&gt; "FooA";
  }
  
  public class B : Commons, IFooB
  {
      public string SayFooB() =&gt; "FooB";
  }
  </code></pre>
  
  <p>I wanted to have a 4th interface, a test one that will expose all methods in order to test them with out any reference juggling.</p>
  
  <p>And I can define it like :</p>
  
  <pre><code>public interface I_A_B : IFooA, IFooB
  {
  }
  </code></pre>
  
  <p>But the issue is on the implementation on this contract. I wanted to use base class inheritance in order to be sue that I use the same implementation without copy past and maintenance. 
  Just like <code>class A</code> use <code>class Commons</code>, and any change in the implementation of <code>Commons</code> will be inherited in <code>A</code>.</p>
  
  <pre><code>public class A : Commons, IFooA
  </code></pre>
  
  <p>But multiple inherance is impossible  (ref msdn <a href="https://devblogs.microsoft.com/csharpfaq/why-doesnt-c-support-multiple-inheritance/" rel="nofollow noreferrer">Why doesn’t C# support multiple inheritance?</a>)
  , so the following line cause error.</p>
  
  <pre><code>public class A_B : A, B, I_A_B
  </code></pre>
  
  <p>How can I have an implementation of <code>interface I_A_B : IFooA, IFooB</code> that use the most of <code>class A : Commons, IFooA</code> and <code>class B : Commons, IFooB</code> with the minimum code copy past?</p>