title: Return/consume dynamic anonymous type across assembly boundaries
body: <p>The code below works great. If the <code>Get</code> and <code>Use</code> methods are in different assemblies, the code fails with a RuntimeBinderException. This is because the .Net runtime system only guarantees commonality of anonymous types (<code>&lt;string, int&gt;</code> in this case) within assemblies. </p>
  
  <p>Is there any way to fool the runtime system to overcome this? I can inspect the object in the debugger on the <code>Use</code> side, and the debugger can see the relevant properties.</p>
  
  <pre><code>class Program
  {
      static void Main(string[] args)
      {
          UsePerson();
          Console.ReadLine();
      }
  
      public static void UsePerson()
      {
          var person = GetPerson();
  
          Console.WriteLine(person.Name);
      }
  
      public static dynamic GetPerson()
      {
          return new { Name = "Foo", Age = 30 };
      }
  }
  </code></pre>