title: How to fake the type in JSON.NET when serializing out?
body: <p>lets say I have</p>
  
  <pre><code>public class Person
      {
          public string FirstName { get; set; }
          public string LastName { get; set; }
          public string PhoneNumber { get; set; }
      }
  </code></pre>
  
  <p>now, if I create an anonymous type like...</p>
  
  <pre><code>var p = new Person() {FirstName = "bob",
                        LastName = "builder",
                        PhoneNumber = "0800 YESWECAN"};
  
  var anon = new {p.FirstName, p.LastName};
  </code></pre>
  
  <p>with JSON.NET, when you have TypeNameHandling = TypeNameHandling.Objects,  it will serialize ( and then use for deserilization ) the type.    What I'm wanting to do, is to fake the type in the annoymous class so that when it gets serialized it looks like a "Person" object.</p>
  
  <p>Is there a nice simple way to do this?</p>
  
  <p>NOTE:  It MUST have the Json.Net type information in the json  ( $type ).  So LBs answer doesn't solve the problem, in fact I could just use the .net frameworks json facilities to do exactly that.</p>