title: Json.net deserialization array of interfaces
body: <p>I'm getting a "type is interface, cannot be instanciated" deserialization error with json.net even though I am specifying type on the object I'm trying to deserialize</p>
  
  <pre><code>private static JsonSerializerSettings settings = new JsonSerializerSettings { 
      TypeNameHandling = TypeNameHandling.Auto };
  
  /// &lt;summary&gt;
  /// Returns an object created from the jObject and placed in a stub object
  /// &lt;/summary&gt;
  /// &lt;typeparam name="T"&gt;&lt;/typeparam&gt;
  /// &lt;param name="jObj"&gt;&lt;/param&gt;
  /// &lt;returns&gt;&lt;/returns&gt;
  public static T FromJObject&lt;T&gt;(JToken jObj)
  {
      if (jObj == null)
      {
          jObj = new JObject();
      }
      if (jObj is JValue)
      {
          return (T)((JValue)jObj).Value;
      }
      else
      {
          return (T)JsonConvert.DeserializeObject&lt;T&gt;(jObj.ToString(), settings);
      }
   }
  </code></pre>
  
  <p>this is jObj</p>
  
  <pre><code>{
    "Id": 2,
    "Name": "Name",
    "JsonMapEnum": 0,
    "Validations": [
      {
        "Id": 1,
        "$type": "JsonMap.Default.JValidation, JsonMap"
      }
    ],
    "JSType": 3,
    "SubJsonMapEnum": -1,
    "$type": "JsonMap.Default.JAttribute, JsonMap"
  }
  </code></pre>
  
  <p>This is the error</p>
  
  <p><code>Could not create an instance of type JsonMap.Interfaces.IValidation. Type is an interface or abstract class and cannot be instantated. Path 'Validations[0].Id'</code></p>
  
  <p>It looks like it's trying to turn Id into a Validation object. Why?</p>
  
  <p>these are the interfaces implemented by my types</p>
  
  <pre><code>public interface IJsonMap
  {
      long Id { get; set; }
      String Name { get; set; }
      LazyEnum JsonMapEnum { get; set; }
  }
  
  public interface IAttribute : IJsonMap
  {
      IEnumerable&lt;IValidation&gt; Validations { get; set; }
      LazyEnum JSType { get; set; }
      LazyEnum SubJsonMapEnum { get; set; }
  }
  
  public interface IValidation : IJsonMap
  {
      IEnumerable&lt;IArgument&gt; Arguments { get; set; }
  }
  </code></pre>
  
  <p>this is the call</p>
  
  <pre><code>FromJObject&lt;JAttribute&gt;(CreationJObj)
  </code></pre>
  
  <p>JAttribute implements IAttribute</p>