title: How to inject a dependency into a base class if child doesn't know it?
body: <p>I have an abstract base class <code>Command</code> that depends on <code>ICommandLogger</code> interface:</p>
  
  <pre><code>public abstract class Command
  {
      public Command(ICommandLogger cmdLogger) { /* ... */ }
  }
  </code></pre>
  
  <p>And now all the inheritors are look like:</p>
  
  <pre><code>public class ConcreteCommand : Command
  {
       public ConcreteCommand(CommandLoggersNamespace.ICommandLogger cmdLogger)
           : base(cmdLogger)
       {
       }
  }
  </code></pre>
  
  <p>I don't like they are forced to know about <code>ICommandLogger</code> (which they do not use).</p>
  
  <p>How to get around of this? Or what are the reasons for complete redesign?</p>