На самом деле, биты, где вы вызываете .NET API, это:
var ser = new XmlSerializer(typeof(T));
ser.Serialize(outStream, obj);
var ser = new XmlSerializer(typeof(T));
var obj = (T) ser.Deserialize(inStream);
Остальная часть кода - ваша личная специализация. Я не думаю, что две строки кода - это слишком много для вызова API. Вы всегда можете сжать их, например,
(new XmlSerializer(typeof(T))).Serialize(outStream, obj);
var obj = (T) (new XmlSerializer(typeof(T))).Deserialize(inStream);
Чисто в сторону, я должен отметить, что я считаю хранение данных XML в строковых переменных как запах кода. Как только вы извлекаете данные XML из необработанного двоичного кода (XDocument
, XmlDocument
, XPathDocument
или любого другого типа DOM), вы сталкиваетесь с проблемами кодирования. Что если разработчик сериализует объект в строку с кодировкой X, а затем записывает строку в файл на диске с кодировкой Y? Не очень безопасно. Кроме того, если бы кодировка X не была UTF-16, как бы вы представили данные в строке .NET?