title: Registering a custom JsonConverter globally in Json.Net
body: <p>Using <a href="http://james.newtonking.com/json" rel="noreferrer">Json.Net</a>, I have properties in my objects which need special care in order to serialize / deserialize them. Making a descendant of <code>JsonConverter</code>, I managed to accomplish this successfully. This is the common way of doing this:</p>
  
  <pre><code>public class SomeConverter : JsonConverter
  {
      public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
      {
          ...
      }
  
      public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
      {
          ...
      }
  
      public override bool CanConvert(Type objectType)
      {
          ...
      }
  }
  
  class SomeClass
  {
      [JsonProperty, JsonConverter(typeof(SomeConverter))]
      public SomeType SomeProperty;
  }
  
  //Later on, in code somewhere
  SomeClass SomeObject = new SomeClass();
  string json = JsonConvert.SerializeObject(SomeObject, new SomeConverter());
  </code></pre>
  
  <p>My problem with this code is that I need to introduce my custom converter in every serialization / deserialization. In my project there are many cases that I cannot do that. For instance, I'm using other external projects which make use of Json.Net as well and they will be working on my <code>SomeClass</code> instances.  But since I don't want to or can't make change in their code, I have no way to introduce my converter.</p>
  
  <p>Is there any way I can register my converter, using some <code>static</code> member perhaps, in Json.Net so no matter where serialization / deserialization happens, my converter is always present?</p>