Десериализация JSON в один из нескольких подклассов C #

У меня есть структура json, которая выглядит примерно так:

"list":[
  {
    "type":"link",
    "href":"http://google.com"
  },
  {
    "type":"image",
    "src":"http://google.com/logo.png"
  },
  {
    "type":"text",
    "text":"some text here"
  },
]

Я хотел бы десериализовать это в список объектов, где каждый объект является подклассом базового класса. Каждый элемент в списке имеет разные свойства (href, src, text ), поэтому я не могу использовать один и тот же класс для достижения одного. Вместо этого я хотел бы три подкласса общего класса. Свойство type каждого элемента в списке JSON можно использовать, чтобы решить, какой подкласс использовать. Так, например, у меня могут быть следующие классы

public Item{
  public string type {get; set;}
}
public LinkItem : Item {
  public string href {get; set;}
}
public ImageItem : Item {
  public string src {get; set;}
}
public TextItem : Item {
  public string text {get; set;}
}

Есть какой-либо способ сделать это? Или есть лучший способ десериализовать список разнородных типов объектов?

РЕДАКТИРОВАТЬ:

Кстати, я использую json.net

10
задан Marius 11 July 2012 в 09:43
поделиться