C#BinarySerialize为具有不同超类的不同类名

时间:2017-01-30 03:27:46

标签: c# serialization

我最初有这样的课程

class Y : SuperClass
{
   int a;
   int b;
   int c;
}

我从来没有使用过SuperClass的任何东西,所以我决定将我的代码折射成新的代码:

class Z
{
   int a;
   int b;
   int c;
}

您可以看到Z具有完全相同的序列化数据。

现在我已将许多Y:SuperClass数据序列化为二进制文件,因此我想将它们全部迁移到Z类并重新序列化。

我可以将这些文件加载​​回类Y:SuperClass的实例中,但是如何将它们序列化为Z类呢?请注意,真实的变量包含许多变量,我不能简单地为所有这些变量z.a = y.a; z.b = y.b; ...。我希望有更多自动转换为类的方法,你确定变量名称匹配,如反射或更简单的东西。谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用该类反序列化为其他类型: System.Runtime.Serialization.SerializationBinder

此方法在高级二进制序列化部分中进行了解释:

https://www.codeproject.com/kb/cs/drawwithmouse.aspx#AdvancedBinarySerialization%3aDeserializinganObjectIntoaDifferentTypeThantheOneItwasSerializedInto9