title: Delegating access to a class property instead of an object property
body: <p>I've been trying to figure out a way to deal with property mapping and naming programmatically. The thing is that I don't want to have to change multiple portions of code to be able to extend the map. The code I have right now is like this:</p>
  
  <pre><code>public static class Names
  {
      public const string Property = "propertyNameToBeUsedInJson";
  }
  
  ...
  switch(propertyName)
  {
      case Property:
          user.propertyToBeMapped = json.propertyValue;
          break;
  }
  </code></pre>
  
  <p>What I really wanted was to be able to have some sort of dictionary where I could do something like:</p>
  
  <pre><code>Dictionary&lt;string, Action&gt;() { {"propertyNameToBeUsedInJson", &lt;Class of User&gt;.propertyToBeMapped} };
  </code></pre>
  
  <p>That means I would be delegating access to a property of a Class, not to a concrete object. This way I can iterate over this dictionary and if it contains the key I'm looking for, then I just go and change the property pointed by the value.</p>
  
  <p>I think that a overhead during initialization is ok, but I don't want to use Reflection on a per call basis.</p>
  
  <p>The questions is: Is it possible to use the second way having in mind the statement above? If so, how should I go for it?</p>