Как преобразовать JObject в JSON.Net в T

Я знаю, что могу использовать JsonConvert.DeserializeObject<T>(string), однако мне нужно заглянуть в_type(объекта, который может не быть первым параметром ), чтобы определить конкретный класс для приведения. По сути, я хочу сделать что-то вроде:

//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<MyConcreteType>();
      //NOTE: this doesn't work... 
      // return obj.Root.Value<MyConcreteType>();
   ...
  }
}
...

// my usage...
var obj = ProcessJson(jsonText);
var instance = obj as MyConcreteType;
if (instance == null) throw new MyBaseError(obj);
21
задан lorond 22 November 2016 в 14:53
поделиться