title: How to serialize all but a specific property in one specific serialization
body: <p>I have an object that looks something like this (obviously simplified)</p>
  
  <pre><code>public class Person {
    public string Name { get; set; }
    public int Age { get; set; }
    public string ETag { get { return ... } }
  }
  </code></pre>
  
  <p>What I would like is for ETag to be a hash of the json serialization of the object omitting the ETag property (to prevent a recursive loop). However, I cannot just use a <code>[JsonIgnore]</code> attribute since at other times I want to be able to json serialize the entire thing.</p>
  
  <p>So what I want is something like this</p>
  
  <pre><code>public string ETag { get {
     return Hash(JsonConvert.Serialize(this, p =&gt; p.Ignore(x=&gt;x.ETag) ));
  }}
  </code></pre>
  
  <p>which is unfortunately not an API that exists. How would I achieve something similar?</p>