title: Base / Derived Type Generics Parameter
body: <p>I'd like to have an abstract method inside an abstract class and method signature like this:</p>
  
  <pre><code>public abstract IEnumerable&lt;SynchronizeItem&lt;IDataItem&gt;&gt; Sync(IEnumerable&lt;SynchronizeItem&lt;IDataItem&gt;&gt; clientSyncItems);
  </code></pre>
  
  <p>In the derived class I want to define the method type safety:</p>
  
  <pre><code>public override IEnumerable&lt;SynchronizeItem&lt;AdItem&gt;&gt; Sync(IEnumerable&lt;SynchronizeItem&lt;AdItem&gt;&gt; clientSyncItems)
  {
      // Do something with the AdItems
      _adHandler.Foo(clientItems):
  }
  </code></pre>
  
  <p>This is not possible. Any other possibilities to achieve the same behavior? I don't want to cast each usage of IDataItem to it's specific implementation within AdHandler class.</p>