System.InvalidOperationException:{“无法为:SomeObject准备序列化程序 内部异常:{“没有为类型定义序列化程序:System.Object”}
我可以从代码中的其他内容中获取错误吗?我有很多我正在尝试序列化的课程,但我首先要测试更简单的课程,以确保我的程序能够正常工作。
非常重要:SomeObject是由其他类继承的(我只是在收到错误时序列化这个基类)
[ProtoContract]
[ProtoInclude(10, typeof(AnotherObject))]
[ProtoInclude(11, typeof(YetAgainObject))]
public class SomeObject {
[ProtoMember(1)]
String mName = "";
[ProtoMember(2)]
String mOwner = "";
[ProtoMember(3)]
String mDesc = "";
}
[ProtoContract]
public class AnotherObject : SomeObject{
[ProtoMember(1)]
public object[] someList{ get; set: }
}
...
答案 0 :(得分:0)
在序列化原始对象的过程中,它会检查是否所有 ProtoInclude 语句。它还检查正确的序列化结构和质量!如果其中任何一个出现错误,它会在您尝试序列化的错误中引发错误,但它不会告诉您它来自哪一个,而是说您继承的类导致错误。
因此,我的错误发生在AnotherObject中,具体的解决方法是:
[ProtoContract]
public class AnotherObject : SomeObject{
[ProtoMember(1, DynamicType = true)]
public object[] someList{ get; set: }
}
因为你必须告诉它对象包含可序列化的东西(它会信任你)。