[英]Most elegant way to serialize an object with byte[] members to an XDocument?
我有一個序列化實用程序,可將對象序列化為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
創建任何其他類型的writer。
我可以序列化為字符串,但是我試圖變得聰明,避免使用任何黑客手段。 當某些字段需要base64時,可以使用任何方式序列化到XDocument。
根據文檔 ,沒有字節的余量。 一個替代的base64編碼字符串屬性可能是您最好的選擇(如果是設計使然,那么這是hack嗎?)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.