【发布时间】:2009-01-23 15:00:41
【问题描述】:
在序列化时,我只想将一个对象序列化一次,然后对该对象的任何引用都应序列化为对该对象的引用。这是因为,当我稍后反序列化对象时,我想维护这些引用。为了说明我的目标,下面的代码应该输出“序列化后:true”。
class Program
{
static void Main(string[] args)
{
MyObject obj = new MyObject() { Name = "obj" };
MyObject[] myObjs = new MyObject[]
{
obj, obj
};
Console.WriteLine("Object Refs Equal?");
Console.WriteLine(string.Format("Before Serialization: {0}",
object.ReferenceEquals(myObjs[0], myObjs[1])));
XmlSerializer toXml = new XmlSerializer(typeof(MyObject[]));
using (FileStream toFile = File.Create(@"C:\foo.xml"))
{
toXml.Serialize(toFile, myObjs);
}
XmlSerializer fromXml = new XmlSerializer(typeof(MyObject[]));
using (FileStream fromFile = File.OpenRead(@"C:\foo.xml"))
{
MyObject[] deserialized = (MyObject[])fromXml.Deserialize(fromFile);
Console.WriteLine(string.Format("After Serialization: {0}",
object.ReferenceEquals(deserialized[0], deserialized[1])));
}
Console.ReadLine();
}
}
[Serializable]
public class MyObject
{
public string Name { get; set; }
}
【问题讨论】:
标签: .net serialization