title: When is it Appropriate to use Generics Versus Inheritance?
body: <p>What are the situations and their associated benefits of using Generics over Inheritance and vice-versa, and how should they be best combined?</p>
  
  <p>Thanks for the answer guys.</p>
  
  <p>I'm going to try to state the motivation for this question as best I can:
  I have a class as shown below:</p>
  
  <pre><code>class InformationReturn&lt;T&gt; where T : Info
  {
      InformationReturn(Employee employee, List&lt;T&gt;) { ... }
  }
  </code></pre>
  
  <p>Now suppose I have a repository that takes an InformationReturn argument, that has to strore different fields in a DB depending on the type of Info object T is. Is it better to create different repositories each for the type T is; one repository that uses reflection to determine the type; or is there a better way using inheritance capabilities over/with generics?</p>
  
  <p><strong>Note</strong>: other client code must operate differently based on the type of T as well.</p>