Большинство текущих методов реализации для сериализации объектов в .NET (как V4.0)

StackOverflow https://stackoverflow.com/questions/3096820

Вопрос

У меня есть простой пользовательский объект под названием MyObject (Пара основных свойств и List(of MyObject), так что рекурсивно), что мне нужно сериализовать для хранения. Я еще не уверен, что я пока что сериализую на XML или BINAR что -то не хватает.

  • Сделать XML, я бы использовал System.Xml.Serialization.XmlSerializer
  • Чтобы сделать бинарный, я бы использовал System.Runtime.Serialization.Formatters.Binary.BinaryFormatter

Там тоже есть System.Runtime.Serialization.Formatters.Soap.SoapFormatter, но MSDN утверждает, что он амортизируется в пользу двоичного течения. Я бы ожидал, что все будет во втором пространстве имен выше - есть ли более новая версия XMLSerializer, которую я должен использовать?

Это было полезно?

Решение

Это правильные, текущие реализации для сериализации.

XMLSerializer находится в System.Xml.Serialization пространство имен вместо пространства имен System.Runtime - я подозреваю, что это из-за его местоположения (в сборке System.xml.dll) и его зависимости от System.Xml пространство имен в целом.

Кроме того, FYI - когда есть новые версии класса, которые должны использоваться в пользу более старых версий, MSDN флаги их как «устаревших». Например, см. XmldatadocumentСправка - первая строка:

Примечание: этот API теперь устарел.

Другие советы

Существует также datacontractserializer, который имеет значение .Net 3.5. Он имеет некоторые улучшения по сравнению с XMLSerializer в нескольких областях.

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractserializer.aspx.

Для Json Serialization вы можете использовать:

using System.Web.Script.Serialization;

...

JavaScriptSerializer().Serialize(PocoObject);

Мне было трудно получить это плавно работать в .NET 2.0. Увидеть мой ответ на свой вопрос здесь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top