title: Getting Converters specified via Attributes to be equivalent to global ones in json.net
body: <p>When <code>using Newtonsoft.Json</code>, I can make it do what I need by adding a converter to the top level <code>SerializerSettings</code> or supplying it to the conversion invocation - all is working well.</p>
  
  <p>I'm hoping to extract some of my global converters to instead be applied declaratively in the relevant place where the conversion is actually required.</p>
  
  <p>I'm aware of the following techniques:-</p>
  
  <ul>
  <li>type level <code>[JsonConverter(typeof(Converters.StringEnumConverter))]</code> directly on type <code>X</code></li>
  <li>member level <code>[JsonConverter(typeof(Converters.StringEnumConverter))]</code> iff the member is of type <code>X</code></li>
  <li>item level <code>[JsonProperty(ItemConverterType=typeof(Converters.StringEnumConverter)]</code> if the member is actually an array etc. of <code>X</code></li>
  </ul>
  
  <p>The problem I'm having is that some of the global converters I have in play operate on nested types, e.g. if I have member of type <code>Tuple&lt;X[],Nullable&lt;X&gt;&gt;</code>, I can't express the <em>"if you meet an X when processing this field or any child of it, do the conversion"</em> semantic and instead get a <code>Newtonsoft.Json.JsonSerializationException</code>.</p>
  
  <p>Does such a <strong>"for this tree, also use this converter please"</strong> mechanism exist?  I'd like to avoid having to define a top level type for anything I ever want to convert and then tagging that type with the <code>JsonConverter</code> to work around this?</p>