C # - Добавить список счетчиков в объект JSON - PullRequest
2 голосов
/ 19 сентября 2011

У меня есть метод, который создает List<SomeObject>. Коллекция JSON сериализуется через JavaScriptSerializer. Я использую команду LINQ skip / take, чтобы вернуть подмножество всей коллекции. Итак, мне нужно вернуть размер общей коллекции клиенту как объект (это не может быть рассчитано на стороне клиента, поскольку у него есть только подмножество).

Я мог бы взломать это. Просто добавьте int TotalSize в качестве члена SomeObject.

Я бы предпочел не повторять этот член N раз, так как он нужен только один раз. Я также не хочу выполнять какое-то ужасное ОО, добавляя члена, который на самом деле не принадлежит классу.

Могу ли я еще что-нибудь сделать, чтобы добавить этого нового члена в мой объект JSON?

1 Ответ

2 голосов
/ 19 сентября 2011

Почему бы не создать сложный объект?

public class SomeObjectSet
{
     public int TotalSetCount { get; set; }
     public List<SomeObject> Items { get; set; }

     public SomeObjectSet(List<SomeObject> subset, int totalCount)
     {
          items = subset;
          TotalSetCount = totalCount;
     }
}

Затем вы просто создаете новый объект и присваиваете данные в конструкторе, и ваш JSON должен выглядеть так:

{
     TotalSetCount: 100,
     Items: [
        { ... },
        { ... },
        { ... }
     ]
}

А в коде вы просто сделаете это:

 var subset = mySuperset.Skip(...).Take(...);
 var totalSetCount = mySuperSet.Count();

 var serialization = _javascriptSerializer.Serialize(new SomeObjectSet(subset, totalSetCount));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...