如何序列化引用对象
[Serializable]
public class MySerialClass
{
public MySerialClass()
{
}
public List<Maker> AllMakers
{
get;
set;
}
public Book Book
{
get;
set;
}
}
public class Book
{
public string name;
public Maker maker;
public Book()
{
}
public Book(string name,Maker maker)
{
this.name = name;
this.maker = maker;
}
}
[Serializable]
public class Maker
{
public string name;
public Maker()
{
}
public Maker(string name)
{
this.name = name;
}
}
以上是序列化的类
string strFile = "c:\\MySerialClass.xml";
public void Serialize(MySerialClass mc)
{
using (FileStream fs = new FileStream(strFile, FileMode.Create))
{
XmlSerializer formatter = new XmlSerializer(typeof(MySerialClass));
formatter.Serialize(fs, mc);
}
}
public MySerialClass DeSerialize()
{
MySerialClass mc;
using (FileStream fs = new FileStream(strFile, FileMode.Open))
{
XmlSerializer formatter = new XmlSerializer(typeof(MySerialClass));
mc = (MySerialClass)formatter.Deserialize(fs);
}
return mc;
}
private void btn_Save_Click(object sender, EventArgs e)
{
//this.graphControl1.Serialize();
MySerialClass mc = new MySerialClass();
Maker maker = new Maker("m1");
List<Maker> makerList = new List<Maker>();
makerList.Add(maker);
mc.AllMakers = makerList;
Book b = new Book("b1", makerList[0]);
mc.Book = b;
Serialize(mc);
}
private void btn_ReDraw_Click(object sender, EventArgs e)
{
//this.graphControl1.DeSerialize();
MySerialClass mc = DeSerialize();
}
以上是序列化的方法
我的问题是:
Book类中的Maker属性引用的是MySerialClass属性AllMakers中的一个对象
但是在序列化时保存的是两个对象(我想要实现的保存一个对象,同时有一个对该对象的引用),另外反序列化时只调用一次Maker的构造函数
请指教