title: Cannot serialize inherited property into JSON via Json.Net
body: <p>I am using C# .NET 4.0 and Newtonsoft JSON 4.5.0.11</p>
  
  <pre><code>    [JsonObject(MemberSerialization.OptIn)]
      public interface IProduct
      {
          [JsonProperty(PropertyName = "ProductId")]
          int Id { get; set; }
          [JsonProperty]
          string Name { get; set; }
      }
  
      public abstract class BaseEntity&lt;T&gt;
      {
          private object _id;
  
          public T Id
          {
              get { return (T)_id; }
              set { _id = value; }
          }
      }
  
      public class Product : BaseEntity&lt;int&gt;, IProduct
      {
          public string Name { get; set; }
          public int Quantity { get; set; }
      }
  </code></pre>
  
  <p>I need to serialize part of object and I use interfaces with declared concrete properties  to do this.</p>
  
  <p>The serialization looks like:</p>
  
  <pre><code>Product product = new Product { Id = 1, Name = "My Product", Quantity = 5};
  JsonConvert.SerializeObject(product);
  </code></pre>
  
  <p>Expected result is:</p>
  
  <pre><code>{"ProductId": 1, "Name": "My Product"}
  </code></pre>
  
  <p>But actual result is:</p>
  
  <pre><code>{"Name": "My Product"}
  </code></pre>
  
  <p>How can I serialize this object correctly?</p>
  
  <hr>
  
  <p>UPD: Looked at the source code of json.net and came to the conclusion that this is a bug with grab information about object through ReflectionUtils.</p>