title: unidentified syntax in domain object constructor
body: <p>Can someone help me identify what the purpose of this unidentified syntax is. It is an extra little something in the constructor for this object. What I'm trying to figure out is what is the "&lt; IdT >" at the end of the class declaration line? I think that this is something I would find useful, I just need to understand what it is why so many people seem to do this.</p>
  
  <pre><code>using BasicSample.Core.Utils;
  
  namespace BasicSample.Core.Domain
  {
      /// &lt;summary&gt;
      /// For a discussion of this object, see 
      /// http://devlicio.us/blogs/billy_mccafferty/archive/2007/04/25/using-equals-gethashcode-effectively.aspx
      /// &lt;/summary&gt;
      public abstract class DomainObject&lt;IdT&gt;
      {
          /// &lt;summary&gt;
          /// ID may be of type string, int, custom type, etc.
          /// Setter is protected to allow unit tests to set this property via reflection and to allow 
          /// domain objects more flexibility in setting this for those objects with assigned IDs.
          /// &lt;/summary&gt;
          public IdT ID {
              get { return id; }
              protected set { id = value; }
          }
  </code></pre>