我有一个序列化实用程序,将对象序列化为XDocument.它工作得很好:
public static class SerializationUtil
{
public static T Deserialize<T>(XDocument doc)
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
using (var reader = doc.Root.CreateReader())
{
return (T)xmlSerializer.Deserialize(reader);
}
}
public static XDocument Serialize<T>(T value)
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
XDocument doc = new XDocument(z);
using (var writer = doc.CreateWriter())
{
xmlSerializer.Serialize(writer, value);
}
return doc;
}
一直很愉快地使用它突然我得到:
There was an error generating the XML document.
内在的例外是:
This XmlWriter does not support base64 encoded data.
事实证明,XDocument.CreateWriter()实例方法为您提供了System.Xml.XmlWellFormedWriter类型的编写器,并且该编写器无法编写base64编码数据(我的对象包含byte []).
MSDN甚至没有提到这个类 – 但我似乎无法从XDocument创建任何其他类型的编写器.
我可以序列化为一个字符串,但我试图聪明,避免使用任何黑客.当某些字段需要base64时,可以任何方式序列化到XDocument.
最佳答案 根据
docs,没有允许字节.代理base64编码的字符串属性可能是你最好的选择(如果它的设计是黑客攻击吗?).