title: Custom JsonConverter not called for nested property
body: <p>I have a class Employee where Manager property itself is of type Employee</p>
  
  <pre><code>public class Employee
  {
      public string FirstName { get; set; }
      public string LastName { get; set; }
      public Employee Manager { get; set; }
      public IList&lt;string&gt; Roles { get; set; }
  }
  </code></pre>
  
  <p>I want to create a custom JsonConverter for Employee type.</p>
  
  <pre><code>public class TestJsonConverter : JsonConverter
  {
      public TestJsonConverter()
      {
      }
  
      public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
      {
          JToken t = JToken.FromObject(value);
          if (t.Type != JTokenType.Object)
          {
              t.WriteTo(writer);
          }
          else
          {
              JObject o = (JObject)t;
              IList&lt;string&gt; propertyNames = o.Properties().Select(p =&gt; p.Name).ToList();
              o.AddFirst(new JProperty("Keys", new JArray(propertyNames)));
              o.WriteTo(writer);
          }
      }
  
      public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
      {
          throw new NotImplementedException("Unnecessary because CanRead is false. The type will skip the converter.");
      }
  
      public override bool CanConvert(Type objectType)
      {
          return (objectType == typeof(Employee));
      }
  
      public override bool CanRead
      {
          get { return false; }
      }
  }
  </code></pre>
  
  <p>The ContractResolver is</p>
  
  <pre><code>class ContractResolver : DefaultContractResolver
  {
      protected override JsonObjectContract CreateObjectContract(Type objectType)
      {
          JsonObjectContract contract = base.CreateObjectContract(objectType);
          if (objectType == typeof(Employee))
          {
              contract.Converter = new TestJsonConverter();
          }
          return contract;
      }
  }
  </code></pre>
  
  <p>When I try to serialize the Employee object, custom JsonConverter is getting called only for the top level Employee object, not for the nested Manager property which is also of Employee type:</p>
  
  <pre><code>JsonSerializerSettings settings = new JsonSerializerSettings();
  settings.ContractResolver = new ContractResolver();
  string json = JsonConvert.SerializeObject(employee, Formatting.Indented, settings);
  </code></pre>