C# 尝试将基类型的C反序列化转换为派生类型失败

C# 尝试将基类型的C反序列化转换为派生类型失败,c#,wpf,serialization,C#,Wpf,Serialization,我有两个类,一个派生自另一个。 在创建派生类之前,我将基类对象列表序列化为二进制文件,现在我尝试将它们反序列化回来,但是即使我尝试将反序列化结果分配给对象或根本不将其分配给任何对象,我遇到一个异常:无法将类型Base转换为在调用反序列化方法的行处派生的类型。但是,如果将派生类重命名为Base,它会进行反序列化,将Base中不存在的派生属性保留为null 我可以吗?如果可以,如何让BinaryFormatter在反序列化过程中不尝试将基类转换为派生类?我自己找到了答案 基类有一个a类对象列表,在我

我有两个类,一个派生自另一个。 在创建派生类之前,我将基类对象列表序列化为二进制文件,现在我尝试将它们反序列化回来,但是即使我尝试将反序列化结果分配给对象或根本不将其分配给任何对象,我遇到一个异常:无法将类型Base转换为在调用反序列化方法的行处派生的类型。但是,如果将派生类重命名为Base,它会进行反序列化,将Base中不存在的派生属性保留为null


我可以吗?如果可以,如何让BinaryFormatter在反序列化过程中不尝试将基类转换为派生类?

我自己找到了答案


基类有一个a类对象列表,在我序列化基类对象列表时,每个对象都引用基类。在我尝试反序列化它的那一刻,一个对象在代码中引用了派生对象,但在文件中它们仍然引用了Base,这导致了转换错误。所以问题在于,我将基本对象的版本设置为派生,但忘记了将A对象的版本设置为。

您能给我们展示一个代码示例,让我们自己重现错误吗?@EdPlunkett我已经找到了问题的原因,但感谢您的关注。如果您愿意,请接受答案。@dbc谢谢,作为一个用户,我对StackOverflow还很陌生,所以我没有注意到我可以这么做。