Как сериализировать IList <T>?

14
задан Hinek 4 June 2010 в 11:52
поделиться

3 ответа

Если это действительно List<T>, но Вы хотите защитить от изменения и иметь его, все еще работают, то самое производительное решение будет состоять в том, чтобы попытаться бросить его к списку, и если это перестало работать, затем создают новый список из его содержания, например,

var data = mapper.QueryForList<T>(statement, parameters);
var list = data as List<T> ?? new List<T>(data);

Однако Вы упоминаете, что не можете возвратить интерфейс, потому что это - веб-сервис. Это, возможно, было верно с ASMX и XmlSerializer класс, но если Вы будете создавать веб-сервис с помощью WCF и использовать DataContractSerializer затем, то он счастливо сериализирует интерфейсы набора (и как исходные данные к и как выводы от сервиса). Тот тип изменения может быть несколько больше, чем Вы ищете хотя!

16
ответ дан 1 December 2019 в 13:34
поделиться

Почему необходимо сериализировать IList :) Просто используйте его в качестве источника для Вашего собственного набора и сериализируйте его:

var data = mapper.QueryForList<T>(statement, parameters);
var yourList = new List<T>(data);
//Serialize yourList here ))
2
ответ дан 1 December 2019 в 13:34
поделиться

Я не думаю, что Вам нужен c). Должно быть довольно безопасно использовать решение a).

Это решение зависит от общедоступного API IBatis.net. Хороший API не изменяет их общедоступный API, если это не действительно единственное решение проблемы в жестком реальном времени

Hope, это помогает.

0
ответ дан 1 December 2019 в 13:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: