title: Using Attributes for Documentation in C#
body: <p>In the <a href="http://msdn.microsoft.com/en-us/library/aa288454%28v=vs.71%29.aspx#dtH4" rel="nofollow noreferrer">MSDN Attributes Tutorial</a> they use <code>Author</code> as an example for an attribute:</p>
  
  <pre><code>[Author("Jane Programmer", Version = 2), IsTested()]
  class Order
  {
      // add stuff here ...
  }
  </code></pre>
  
  <p>This seemed to me to be a good idea because it would allow you to use reflection to group classes by author (for example) - effectively exposing metadata that would normally be in documentation to the compiler, which could be useful. I immediately thought "aha! I should be using attributes for all my inline block documentation" - e.g.:</p>
  
  <pre><code>[Author("Me")]
  [Description("Add 1 to value")]
  [Param("value", "The original value to add 1 to")]
  public int AddOne(value) {return value + 1;}
  </code></pre>
  
  <p>However none <a href="https://stackoverflow.com/questions/12554721/attributes-and-xml-documentation-for-method-property">of</a> <a href="https://stackoverflow.com/questions/9423795/documenting-authorize-attribute-usage-producing-a-report">the</a> <a href="https://stackoverflow.com/questions/7157277/using-c-sharp-attributes-and-documentation">answers</a> I could find about documentation and attributes seem to suggest this method. They all use XML for inline documentation.</p>
  
  <p><strong>Are there any built-in attributes</strong> to assist with inline documentation? If not, <strong>are there any libraries / packages</strong> out there that include <strong>pre-defined sets of attributes for inline documentation</strong>?</p>