我有什麼必須是數據協定序列化程序非常嚴重的問題。它拒絕工作。我只是想將一個對象序列化成一個XmlDocument,但是我似乎正在撞牆。DataContractSerializer - 問題
這裏是datacontracts我想連載:
[DataContract(Namespace="urn://test", Name = "ServiceFault1")]
public class ServiceFault
{
[DataMember()]
public int hello { get; set; }
[DataMember()]
public List<Error> Errors {get; set;}
}
[DataContract(Namespace = "urn://test", Name = "Error1")]
public class Error
{
[DataMember()]
public string ErrorCategoryCode { get; set; }
[DataMember()]
public string LocalErrorCode { get; set; }
[DataMember()]
public string Description { get; set; }
}
而任何序列化的方法;
public static XmlDocument Serialize(ServiceFault toSer)
{
DataContractSerializer ser = new DataContractSerializer(toSer.GetType());
MemoryStream mem = new MemoryStream();
ser.WriteObject(XmlWriter.Create(mem), toSer);
XmlDocument tmp = new XmlDocument();
mem.Seek(0, SeekOrigin.Begin);
tmp.Load(mem);
return tmp;
}
每當我調用serialize方法時,內存流總是空的。我也嘗試過一個字符串生成器,只是爲了看看是否有任何東西出來。
如果我使用XmlSerializer這個工作,但我想了解爲什麼地球上的代碼不起作用?爲什麼序列化程序總是空的?
感謝您的幫助! TM
在您的通話.WriteObject,只是傳入流(如「mem」) - 不要創建一個XmlWriter:'ser.WriteObject(mem,toSer);' – 2010-10-04 19:44:01
@marc_s,它會改變什麼? WriteObject將在內部創建一個XwlWriter ... – 2010-10-04 19:50:16
@Thomas Levesque:在我的情況下,**帶有** XmlWriter,它沒有工作,沒有 - 它的工作完美...去圖... – 2010-10-04 20:19:17