Я только что написал это SerializationHelper класс, но я не могу поверить, что это необходимо!Должен ли я действительно писать этот «SerializationHelper»?
using System.IO;
using System.Xml.Serialization;
public static class SerializationHelper
{
public static string Serialize<T>(T obj)
{
var outStream = new StringWriter();
var ser = new XmlSerializer(typeof(T));
ser.Serialize(outStream, obj);
return outStream.ToString();
}
public static T Deserialize<T>(string serialized)
{
var inStream = new StringReader(serialized);
var ser = new XmlSerializer(typeof(T));
return (T)ser.Deserialize(inStream);
}
}
И он используется так:
var serialized = SerializationHelper.Serialize(myObj);
и:
var myObj = SerializationHelper.Deserialize<MyType>(serialized)
Я пропускаю что-то в рамках .NET? Это не ракетостроение!
Я ничего не видел в платформе .NET, чтобы вытеснить вашу общую реализацию Serialize. –
Это, вероятно, случай функций, начиная с -100 (перефразировать http://blogs.msdn.com/ericlippert/archive/2009/06/15/making-it-easier.aspx). Дизайнеры BCL не должны были думать, что создание объектов из xml-строк (и наоборот) заслуживает всей работы, связанной с добавлением функции в API - * в частности *, поскольку это не ракетостроение! –
Обычно сериализация является функцией Т, а не универсальным сериализатором. Это связано с тем, что не всегда необходимо сериализовать все из класса, чтобы восстановить его, поэтому класс с конкретными знаниями является более информированным местом для выполнения этой деятельности. – Lazarus