title: How to cast JObject in JSON.Net to T
body: <p>I know that I can use <code>JsonConvert.DeserializeObject&lt;T&gt;(string)</code>, however, I need to peek into the object's <code>_type</code> (which may not be the first parameter) in order to determine the specific class to cast to. Essentially, what I am wanting to do is something like:</p>
  
  <pre><code>//Generic JSON processor for an API Client.
  function MyBaseType ProcessJson(string jsonText)
  {
    var obj = JObject.Parse(jsonText);
    switch (obj.Property("_type").Value.ToString()) {
      case "sometype":
        return obj.RootValue&lt;MyConcreteType&gt;();
        //NOTE: this doesn't work... 
        // return obj.Root.Value&lt;MyConcreteType&gt;();
      ...
    }
  }
  ...
  
  // my usage...
  var obj = ProcessJson(jsonText);
  var instance = obj as MyConcreteType;
  if (instance == null) throw new MyBaseError(obj);
  </code></pre>