title: Is there an easy way to have dynamic/ExpandoObject return strings and not objects?
body: <p>I want to use a dynamic object where I'd normally use <code>Dictionary&lt;string, string&gt;</code>.
  I want to go from</p>
  
  <pre><code>dict.Add("key", "value");
  string val = dict["key"];
  </code></pre>
  
  <p>to</p>
  
  <pre><code> dyna.key = "value";
   string val = dyna.key
  </code></pre>
  
  <p>Typical <code>ExpandoObject</code> will return an <code>object</code> for <code>dyna.key</code>, what's an easy way to make it return strings without casting when accessing each value?</p>
  
  <hr>
  
  <p>EDIT: I'm sorry, I haven't dug enough into my problem --</p>
  
  <p>It's not that the code I'm calling can't use it as a string, it has THIS:</p>
  
  <pre><code>public static implicit operator SomethingSomething(string name)
  </code></pre>
  
  <p>That's why it breaks</p>
  
  <p>EDIT2: welp, I'm an idiot, only after recreating it from scratch did I read the full error message: has no applicable method named 'GetMyClass' but appears to have an extension method by that name. Extension methods cannot be dynamically dispatched. Consider casting the dynamic arguments or calling the extension method without the extension method syntax.</p>