title: User-friendly Property Names in .NET, like those in Rails
body: <p>In Ruby on Rails, there's a YAML file in the configuration that lets you define plain-English versions of your model property names. Actually, it lets you define plain-any-language versions: it's part of the internationalization stuff, but most people use it for things like displaying model validation results to the user.</p>
  
  <p>I need that kind of functionality in my .NET MVC 4 project. The user submits a form and gets an email of pretty much everything they posted (the form gets bound to a model). I wrote a helper method to dump out an HTML table of property/value pairs by reflection, e.g.</p>
  
  <pre><code>foreach (PropertyInfo info in obj.GetType()
      .GetProperties(BindingFlags.Public | 
                     BindingFlags.Instance | 
                     BindingFlags.IgnoreCase)) 
  {
    if (info.CanRead &amp;&amp; !PropertyNamesToExclude.Contains(info.Name)) 
    {
      string value = info.GetValue(obj, null) != null ? 
                                              info.GetValue(obj, null).ToString() :
                                              null;
      html += "&lt;tr&gt;&lt;th&gt;" + info.Name + "&lt;/th&gt;&lt;td&gt;" + value + "&lt;/td&gt;&lt;/tr&gt;";
    }
  }
  </code></pre>
  
  <p>But of course, this prints out <code>info.Name</code>'s like "OrdererGid", when maybe "Orderer Username" would be nicer. Is there anything like this in .NET?</p>