序列化/反序列化派生类

本文关键字:派生 反序列化 序列化 | 更新日期: 2023-09-27 18:34:34

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

实例化后,派生类的对象具有所有 25 个成员。现在如何只序列化派生类的 5 个成员?当我使用"this"进行服务器化或反序列化时,整个类(所有 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));

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

感谢您的所有帮助。

序列化/反序列化派生类

对不想序列化的每个字段使用 [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

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