title: How to override get accessor of a dynamic object's property
body: <p>Let's suppose I have the following class:</p>
  
  <pre><code>public class Person {
      public string Name { get; set; }
      public string Surname { get; set; }
      public string FullName {
          get {
              return Name + " " + Surname;
          }
      }
  }
  </code></pre>
  
  <p>The following block:</p>
  
  <pre><code>Person person = new Person();
  person.Name = "Matt";
  person.Surname = "Smith";
  return person.FullName;
  </code></pre>
  
  <p>would return <code>Matt Smith</code>.</p>
  
  <p>Let's change our <code>Person</code> type to a dynamic <code>ExpandoObject</code>.</p>
  
  <p>The code would look like this:</p>
  
  <pre><code>dynamic person = new ExpandoObject();
  person.Name = "Matt";
  person.Surname = "Smith";
  </code></pre>
  
  <p>But here's where  I am stuck. How can I override the <code>get</code> accessor of a new <code>FullName</code> property?</p>
  
  <p>I could achieve the same effect creating a new method:</p>
  
  <pre><code>person.GetFullName = (Func&lt;string&gt;)(() =&gt; {
        return person.Name + " " + person.Surname;
  });
  </code></pre>
  
  <p>But this would end up with a method and not a property, therefore calling it like:</p>
  
  <pre><code>person.GetFullName();
  </code></pre>
  
  <hr>
  
  <h2>EDIT</h2>
  
  <p>Please note that I do not want to know how to define or create a new dynamic property. I would like to know how to override or define a get accessor for a dynamic property.</p>
  
  <p>I picture the code can be something like this:</p>
  
  <pre><code>person.FullName.get = (Func&lt;string&gt;)(() =&gt; {
       return person.Name + " " + person.Surname;
  });
  </code></pre>
  
  <p>Then, invoked like this:</p>
  
  <pre><code>Console.WriteLine(person.FullName); //Prints out "Matt Smith"
  </code></pre>