Большинство текущих методов реализации для сериализации объектов в .NET (как V4.0)
-
29-09-2019 - |
Вопрос
У меня есть простой пользовательский объект под названием 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. Увидеть мой ответ на свой вопрос здесь.