title: Getting property description attribute
body: <p><strong>Existing code (simplified)</strong></p>
  
  <p>I have this function</p>
  
  <pre><code>public static string[] GetFieldNames&lt;T&gt;(IEnumerable&lt;T&gt; items)
    where T : class
  {
    var properties = typeof(T).GetProperties().Where(p =&gt; SystemTypes.Contains(p.PropertyType)); // Only get System types
  
    return properties.Select(p =&gt; p.Name).ToArray();
  }
  </code></pre>
  
  <p>So if say I have this class</p>
  
  <pre><code>class MyClass {
    public string Name { get; set; }
  
    [Description("The value")]
    public int Value { get; set; }
  }
  </code></pre>
  
  <p>I can have code like this</p>
  
  <pre><code>List&lt;MyClass&gt; items = ...; // Populate items somehow
  string[] fieldNames = GetFieldNames(items); // This returns ["Name", "Value"]
  </code></pre>
  
  <p>That works fine.</p>
  
  <p><strong>The problem</strong></p>
  
  <p>I need to get the Description (if it exists), so that <code>GetFieldNames(items)</code> returns <code>["Name", "The value"]</code></p>
  
  <p>How do I modify the <code>GetFieldNames()</code> function to read the Description attribute if it exists?<br>
  <sub>(Please note that this function has been simplified, the real function is much more complex, so please avoid changing the logic)</sub></p>