使用c# . net 2.0,我有一个组合数据类,它确实有[Serializable]属性。我正在创建一个XMLSerializer类并将其传递到构造函数中:
XmlSerializer serializer = new XmlSerializer(typeof(DataClass));
我得到一个异常说:
有错误反射类型。
在数据类内部有另一个复合对象。这是否也需要有[Serializable]属性,或者通过将它放在顶部对象上,它是否递归地应用到内部的所有对象?
使用c# . net 2.0,我有一个组合数据类,它确实有[Serializable]属性。我正在创建一个XMLSerializer类并将其传递到构造函数中:
XmlSerializer serializer = new XmlSerializer(typeof(DataClass));
我得到一个异常说:
有错误反射类型。
在数据类内部有另一个复合对象。这是否也需要有[Serializable]属性,或者通过将它放在顶部对象上,它是否递归地应用到内部的所有对象?
当前回答
我一直在使用NetDataSerialiser类来序列化 我的域类。NetDataContractSerializer类。
域类在客户机和服务器之间共享。
其他回答
有一种情况是连续的两个元素的顺序是相同的
[System.Xml.Serialization.XmlElementAttribute(IsNullable = true, Order = 0, ElementName = "SeriousInjuryFlag")]
.... 一些代码…
[System.Xml.Serialization.XmlElementAttribute(IsNullable = true, Order = 0, ElementName = "AccidentFlag")]
当我将代码更改为类中每个新Property的顺序加1时,错误就消失了。
我发现. net 2.0中的Dictionary类不能使用XML进行序列化,但是在使用二进制序列化时可以很好地进行序列化。
我在这附近找了份工作。
看看你得到的内部异常。它将告诉您序列化哪个字段/属性有问题。
您可以通过使用[XmlIgnore]属性来装饰xml序列化中的字段/属性来排除它们。
XmlSerializer没有使用[Serializable]属性,所以我怀疑这是问题所在。
序列化图中的所有对象都必须是可序列化的。
由于XMLSerializer是一个黑盒,如果您想进一步调试序列化过程,请检查这些链接。
更改XmlSerializer输出临时程序集的位置
如何:调试到.NET XmlSerializer生成的程序集
我一直在使用NetDataSerialiser类来序列化 我的域类。NetDataContractSerializer类。
域类在客户机和服务器之间共享。