我有一個類MyClass
其實現是可序列化爲XML,我用它來簡單地持久化數據。使用可序列化類實現複製構造器類
現在我需要實現一個Copy-Constructor,並且需要複製的每個Field也都是序列化的,所以它將是實現我的解決方案的最簡單方法。
這是我一直使用FileStream
但在這種情況下,我得到的Deserialize(Stream)
- 方法的InvalidOperationException
時,即時通訊使用XmlSerializer
不工作的系列化Funcions到目前爲止已經試過
static public MyClass Clone(MyClass MyClass)
{
MyClass clone;
XmlSerializer ser = new XmlSerializer(typeof(MyClass), _xmlAttributeOverrides);
using (var ms = new MemoryStream())
{
ser.Serialize(ms, MyClass);
clone = (MyClass)ser.Deserialize(ms);
}
return clone;
}
它。
堆棧跟蹤
bei System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
bei System.Xml.Serialization.XmlSerializer.Deserialize(Stream stream)
bei Namespace.MyClass.Clone(MyClass myClass)
我從來沒有使用之前一個MemoryStream,但here微軟告訴我,我可以用這個流與序列化。
告訴我什麼,我沒有看到:)
您使用'XmlSerializer'而不是創建複製字段的任何特定原因? –
@YuvalItzchakov結構非常深,需要複製的東西與序列化的東西完全相同。有足夠的性能,所以它是一個相當可行的簡短解決方案。 – LuckyLikey
我假設'BinaryFormatter'會更快。研究一下。 –