title: Cannot assign value to ExpandoObject
body: <p>Just trying out on dynamic objects and I encountered this compile error</p>
  
  <pre><code>ExpandoObject myObj = new ExpandoObject();
  myObj.GivenName = "Testing";
  </code></pre>
  
  <blockquote>
    <p>System.Dynamic.ExpandoObject' does not contain a definition for
    'GivenName' and no extension method 'GivenName' accepting a first
    argument of type 'System.Dynamic.ExpandoObject' could be found</p>
  </blockquote>
  
  <p>Looking at <a href="http://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject.aspx" rel="nofollow">MSDN: ExpandoObject</a>, they actually did it differently - using <code>dynamic</code> keyword</p>
  
  <pre><code>dynamic myObj = new ExpandoObject();
  myObj.GivenName = "Testing";
  </code></pre>
  
  <p>What is the explanation for this? And is it possible to still assign values on the instance of <code>myObj</code> without using <code>dynamic</code> keyword? I looked if it has <code>.SetProperty</code> but no.</p>
  
  <p>Thanks</p>
  
  <h2>Update</h2>
  
  <p>Now I understand I have to use <code>dynamic</code> keyword, but what use is this line if it's allowed</p>
  
  <pre><code>ExpandoObject myObj = new ExpandoObject();
  </code></pre>