序列化/反序列化派生类

时间:2012-05-17 14:36:59

标签: c# serialization xml-serialization deserialization xml-deserialization

我有一个基类,另一个派生自它。假设,基类有20个成员,派生有5个成员。只有派生类是可序列化的。

实例化后,派生类的对象拥有全部25个成员。现在我怎么才能序列化派生类的5个成员?当我使用“this”进行serizalize或反序列化时,整个类(所有25个成员)被序列化然后反序列化。

以下是代码段(未完整):

// Base class definition.
public abstract class baseMyClass
{
// declaration of members
}

...

// Derived class definition.
[Serializable]
public sealed class MyDerivedClass : baseMyClass
{
// declaration of members
}

...

// Serializing the object.
StringWriter writer = new StringWriter();
XmlSerializer xs = new XmlSerializer(typeof(MyDerivedClass));
xs.Serialize(writer, this);

...

// Deserializing the object.
StringReader reader = new StringReader(System.Text.Encoding.UTF8.GetString(data));
XmlSerializer xs = new XmlSerializer(typeof(MyDerivedClass));
MyDerivedClass objMyDerivedClass = (MyDerivedClass)(xs.Deserialize(reader));

我找不到任何类似的例子。如果你知道一个,请指出我。

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

在您不想序列化的每个字段上使用[NonSerializedAttribute]属性。

或者实现ISerializsable接口并手动序列化派生类所需的字段。

http://msdn.microsoft.com/en-US/library/axwwbcs6(v=vs.80

http://msdn.microsoft.com/en-us/library/ty01x675(v=vs.80).aspx

答案 1 :(得分:0)

我没有继承,而是将类(可以序列化)作为父类的成员。父类不再是父类。我将实例化该类的对象,它将有一个可以序列化的成员对象。