使用c# . net 2.0,我有一个组合数据类,它确实有[Serializable]属性。我正在创建一个XMLSerializer类并将其传递到构造函数中:

XmlSerializer serializer = new XmlSerializer(typeof(DataClass));

我得到一个异常说:

有错误反射类型。

在数据类内部有另一个复合对象。这是否也需要有[Serializable]属性,或者通过将它放在顶部对象上,它是否递归地应用到内部的所有对象?


当前回答

我也有同样的问题,在我的例子中,对象有一个ReadOnlyCollection。集合必须实现Add方法才能序列化。

其他回答

看看你得到的内部异常。它将告诉您序列化哪个字段/属性有问题。

您可以通过使用[XmlIgnore]属性来装饰xml序列化中的字段/属性来排除它们。

XmlSerializer没有使用[Serializable]属性,所以我怀疑这是问题所在。

还要注意XmlSerializer不能序列化抽象属性。看到我的问题在这里(我已经添加了解决方案代码)..

XML序列化和继承类型

我一直在使用NetDataSerialiser类来序列化 我的域类。NetDataContractSerializer类。

域类在客户机和服务器之间共享。

我认为最常见的原因是:

 - the object being serialized has no parameterless constructor
 - the object contains Dictionary
 - the object has some public Interface members

我也有同样的问题,在我的例子中,对象有一个ReadOnlyCollection。集合必须实现Add方法才能序列化。