title: Deserialization does not work for dynamic properties if using Json.NET attributes
body: <h1>The Problem</h1>
  
  <p>Hi all, </p>
  
  <p>I'm trying to deserialize Json-strings with known (static) and unknown (dynamic) properties. For this I'm using Json.NET and <code>System.Dynamic.DynamicObject</code>.
  In my first attempt, I was using Json.NET-specific <a href="http://james.newtonking.com/json/help/index.html?topic=html/SerializationAttributes.htm" rel="nofollow">Serialization Attributes</a> to configure the (de-)serializer. However the dynamic properties in the Json-string are not deserialized in that case. But when I switch to native .NET attributes (<code>[DataContract]</code> and <code>[DataMember]</code>), the dynamic properties are deserialized and I can access them in the created dynamic object. </p>
  
  <p>Is this behavior intended? Am I missing any configuration with the Json.NET attributes to get the same deserialization behavior? </p>
  
  <p>Any clarification would be highly appreciated!</p>
  
  <h1>The Details</h1>
  
  <p>Here I'm providing the details of my implementation (using Json.NET attributes). I'm using <strong>.NET 4.5 and Json.NET 6.0.2</strong></p>
  
  <p>Because I have multiple message types with static and dynamic properties, I introduced a base class, which implements the dynamic handling property:</p>
  
  <pre><code>[JsonObject]
  internal abstract class DynamicMessage : DynamicObject
  {
      [JsonProperty]
      public Dictionary&lt;string, object&gt; dynamicProperties = new Dictionary&lt;string, object();
  
      public override bool TryGetMember(GetMemberBinder binder, out object result) {...}
      public override bool TrySetMember(SetMemberBinder binder, object value) {...}
  }
  </code></pre>
  
  <p>The concrete subclass is looks like this:</p>
  
  <pre><code>[JsonObject]
  internal class ItemMessage : DynamicMessage
  {
      [JsonPropertyAttribute(PropertyName = "id")]
      internal long Id;
      [JsonPropertyAttribute(PropertyName = "parent_item");
      internal long ParentItemId;
      ...
  }
  </code></pre>
  
  <p>And I tried the deserialize the following string like this:</p>
  
  <pre><code>jsonString = @{'id':1,
  'parent_item':5,
  'my_dynamic_property_1' : 1337,
  'my_dynamic_property_2' : 'my_dynamic_property_2'}
  
  JsonSerializer serializer  = new JsonSerializer();
  dynamic itemMessage = serializer.Deserialize&lt;ItemMessage&gt;(new JsonTextReader(jsonString));
  </code></pre>
  
  <p>As I pointed out in the beginning, if I'm using the attributes <code>[JsonObject]</code> and <code>[JsonProperty]</code> all static properties are correctly deserialized and bound to the POCO properties, <strong>but I'm lacking the dynamic properties <code>my_dynamic_property_1</code> and <code>my_dynamic_property_2</code>.</strong> </p>
  
  <p>When I change to <code>[DataContract]</code> (for <code>[JsonObject]</code>) and <code>[DataMember]</code> (for <code>[JsonProperty]</code>) also the dynamic properties in the Json will be deserialized and I can call</p>
  
  <pre><code>itemMessage.my_dynamic_property_1; //=1337
  itemMessage.my_dynamic_property_2; //="my_dynamic_property_2"
  </code></pre>