title: c# Abstract Generic Class inheriting from Abstract Generic Class
body: <p>I'm trying to create an abstract generic class which inherits from another abstract generic class.</p>
  
  <p>Here's what I have so far</p>
  
  <pre><code>public abstract class BaseClass {
      public long Id { get; private set; }
  
      public BaseClass(long id) {
          this.Id = id;
      }
  }
  
  public abstract class BaseClass&lt;T&gt; : BaseClass where T : BaseClass {
      protected BaseClass(long id)
          : base(id) {
  
      }
  
      public static T Get(long id) {
          T item;
          return TryGet(id, out item) ? item : default(T);
      }
  
      public static bool TryGet(long id, out T item) {
          item = null; // This is where I call the cache but for this example I've removed so it will compile
          if (item != null) { return true; }
          else {
              // Call TryGetFallback method
              return false;
          }
      }
  
      protected abstract T TryGetFallback(long id);
  }
  
  
  public abstract class DerivedClass : BaseClass&lt;DerivedClass&gt; {
      public String Name { get; private set; }
  
      public DerivedClass(long id, String name)
          : base(id) {
          this.Name = name;
      }
  }
  
  public class DerivedDerivedClass : DerivedClass {
  
      protected override DerivedDerivedClass TryGetFallback(long id) {
          // Handle the try get fallback
      }
  }
  </code></pre>
  
  <p>The TryGetFallback method on the DerivedDerivedClass causes a compiler error.</p>