DataContractSerializer отсутствует в .NET Compact Framework - PullRequest
3 голосов
/ 07 марта 2009

Похоже, что DataContractSerializer недоступен в .NET Compact Framework. Я нахожу это довольно удивительным, поскольку считаю DataContractSerializer священным Граалем сериализации и одним из наиболее широко используемых классов, представленных в .NET 3.

Есть ли способ получить такую ​​же функциональность в Compact Framework, то есть возможность легко сохранять и восстанавливать графы объектов реального мира, используя текстовый формат?

Я бы предпочел держаться подальше от старых ограниченных сериализаторов .NET, таких как XmlSerializer и BinarySerializer.

Я думаю, что, возможно, существует специальная реализация DataContractSerializer или возможно использовать код из Mono? Кто-нибудь пытался это сделать?

Ответы [ 3 ]

3 голосов
/ 07 марта 2009

Разве это не доступно в CF 3.5? (правка: нет, я проверял - на самом деле это не так). Я знаю, что XmlSerialzier есть, но да, у него есть некоторые ограничения.

Должен ли он быть текстовым? Опция protobuf-net , которая работает на CF2.0, CF3.5, Silverlight, Mono, .NET 2.0 и т. Д .; и включает в себя все, что вам обычно нужно (включая обратные вызовы и т. д.).

Кстати, код Mono (из "Olive"), в прошлый раз, когда я смотрел, не очень полный ...

(редактировать) Еще одна опция может быть Json.NET ; с здесь , теперь это работает на CF; поскольку это JSON, он основан на тексте и должен выполнять большую часть того, что вам нужно.

0 голосов
/ 20 марта 2009

Нашел решение: -)

Отличный сериализатор XML на http://www.codeproject.com/KB/XML/GR_CustomXmlSerializer.aspx.

Как таковой, код не работает на Compact Framework, но я сделал несколько тривиальных настроек, чтобы заставить его работать, с незначительной потерей функциональности. Я также использовал OpenNetCF, чтобы заполнить несколько недостающих фрагментов CF.

0 голосов
/ 09 марта 2009

Я не знаю, справедливо ли называть XmlSerializer «ограниченным». Что ты имеешь в виду? Вы использовали это и нашли это хотение? Что конкретно для вас не получается?

По моему опыту, XmlSerializer на самом деле обладает более широкими возможностями, чем DCS. DCS делает меньше, что, наверное, хорошо. С другой стороны, DCS выполняет, по крайней мере, одну вещь, которую не делает XmlSerializer - это то, что он может сериализоваться напрямую в приватные члены и из них.

XmlSerializer быстр и вполне способен, и вы можете извлечь из него хорошую полезность.

...