title: property.GetValue(this, null) leads to "Object does not match target type"
body: <p>I have a database class like this</p>
  
  <pre><code>class Database
      {
          [Browsable(false)]
          public long Session { get; set; }
          public string Förnamn { get; set; }
          public string Efternamn { get; set; }
          public string Mail { get; set; }   
      }
  </code></pre>
  
  <p>A DataGridView uses BindingList as it's datasource and I retrieve the selected row of a gridview as a database class instance like this:</p>
  
  <pre><code>Database currentObject = (Database)dataGridView1.CurrentRow.DataBoundItem;
  </code></pre>
  
  <p>Now I'm trying to loop through the properties of "currentObject" like this:</p>
  
  <pre><code>foreach (PropertyInfo property in currentObject.GetType().GetProperties())
          {         
              var name = property.Name;
              object obj = property.GetValue(this, null);    
          }
  </code></pre>
  
  <p>But on line <code>object obj = property.GetValue(this, null);</code> it crashes and I get:</p>
  
  <blockquote>
    <p>An unhandled exception of type 'System.Reflection.TargetException'
    occurred in mscorlib.dll</p>
    
    <p>Additional information: Object does not match target type.</p>
  </blockquote>
  
  <p>What am I missing here?</p>