Какой десериализатор Json отображает коллекции IList <T>?

я пытаюсь десериализовать JSON в объектную модель, где коллекции представлены в видеIList типы.

Фактическая десериализация здесь:

JavaScriptSerializer serializer = new JavaScriptSerializer();

return serializer.Deserialize(
    (new StreamReader(General.GetEmbeddedFile("Contacts.json")).ReadToEnd()));

Прежде чем опубликовать исключение, яЯ должен знать, что такое неявные преобразования. ЭтоContact тип:

public class Contact
{
    public int ID { get; set; }
    public string Name { get; set; }
    public LazyList Details { get; set; }
    //public List Details { get; set; }
}

И этоContactDetail тип:

public class ContactDetail
{
    public int ID { get; set; }
    public int OrderIndex { get; set; }
    public string Name { get; set; }
    public string Value { get; set; }
}

Важная вещь, чтобы знать сLazyList это то, что он реализует:IList

public class LazyList : IList
{
    private IQueryable _query = null;
    private IList _inner = null;
    private int? _iqueryableCountCache = null;


    public LazyList()
    {
        this._inner = new List();
    }

    public LazyList(IList inner)
    {
        this._inner = inner;
    }

    public LazyList(IQueryable query)
    {
        if (query == null)
            throw new ArgumentNullException();
        this._query = query;
    }

Теперь этоLazyList Определение класса было в порядке, пока я не попытался десериализовать Json.System.Web.Script.Serialization.JavaScriptSerializer кажется, хочет сериализовать спискиList что имеет смысл, потому что этовозраст, но они мне нужны в видеIList поэтому они будут брошены в мойLazyList (по крайней мере, этогде я думаю, что я иду не так).

Я получаю это исключение:

System.ArgumentException: Object of type 'System.Collections.Generic.List`1[ContactDetail]' cannot be converted to type 'LazyList`1[ContactDetail]'..

Когда я пытаюсь использоватьList в моемContact Тип (как вы можете видеть в комментариях выше), кажется, работает. Но я не хочу использоватьLists. Я даже пытался иметь мойLazyList наследование отList который казался казненным, но передаваяListс внутреннейT[] для моей реализации был кошмар, и я просто нене хочу раздуватьList где-нибудь в моей модели.

Я также попробовал некоторыедругой JSON библиотеки безрезультатно (этоВозможно, я не буду использовать их в полной мере. Я более или менее заменил ссылки и попытался повторить код, указанный в верхней части этого вопроса. Может, передача параметров настройки поможет ??).

Я не знаю, что попробовать сейчас. Я иду с другим десериализатором? Подправляю ли я сам десериализацию? Нужно ли менять свои типы, чтобы понравиться десериализатору? Нужно ли больше беспокоиться о неявном приведении или просто реализовать другой интерфейс?

Ответы на вопрос(3)

Ваш ответ на вопрос