title: How to configure JSON.net deserializer to track missing properties?
body: <p>Sample class:</p>
  
  <pre><code>public class ClassA
  {
      public int Id { get; set; }
      public string SomeString { get; set; }
      public int? SomeInt { get; set; }
  }
  </code></pre>
  
  <p>Default deserializer:</p>
  
  <pre><code>var myObject = JsonConvert.DeserializeObject&lt;ClassA&gt;(str);
  </code></pre>
  
  <p>Create the same object for two different inputs </p>
  
  <pre><code>{"Id":5}
  </code></pre>
  
  <p>or</p>
  
  <pre><code>{"Id":5,"SomeString":null,"SomeInt":null} 
  </code></pre>
  
  <p>How can I track properties that were missing during deserialization process and preserve the same behavior? Is there a way to override some of JSON.net serializer methods (e.g. DefaultContractResolver class methods) to achive this. For example:</p>
  
  <pre><code>List&lt;string&gt; missingProps;
  var myObject = JsonConvert.DeserializeObject&lt;ClassA&gt;(str, settings, missingProps);
  </code></pre>
  
  <p>For the first input list should contains the names of the missing properties ("SomeString", "SomeInt") and for second input it should be empty. Deserialized object remains the same.</p>