title: Varied Constructor Dependency Injection based on Interface
body: <p>Say I have this:</p>
  
  <pre><code>public class Human : SentientLifeForm, IHuman {
      IBreathingService breathingService = null;
  
      public Human(IBreathingService breathingService) {
          this.breathingService = breathingService
      }
  }
  
  public class Martian : SentientLifeForm, IMartian {
      IBreathingService breathingService = null;
  
      public Martian(IBreathingService breathingService) {
          this.breathingService = breathingService
      }
  }
  </code></pre>
  
  <p>Then I have two different implementations of the BreathingService...</p>
  
  <pre><code>public class HumanBreathingService { ... }
  public class MartianBreathingService { ... }
  </code></pre>
  
  <p>How can I use DI to pass the correct service implementation to the associated object? Or do I have to specify an IHumanBreathingService and an IMartianBreathingService?</p>