反映类型时出现错误
使用C#.NET 2.0,我有一个组合数据类,它具有[Serializable]
属性。 我正在创建一个XMLSerializer
类并将其传递给构造函数:
XmlSerializer serializer = new XmlSerializer(typeof(DataClass));
我收到一个异常说:
反映类型时出现错误。
在数据类中有另一个复合对象。 这是否也需要具有[Serializable]
属性,或者将它放在顶层对象上,是否递归地将其应用于所有内部对象?
看看你正在得到的内部异常。 它会告诉你哪个字段/属性有序列化的麻烦。
您可以通过使用[XmlIgnore]
属性对它们进行修饰来从xml序列化中排除字段/属性。
我不认为XmlSerializer
使用[Serializable]
属性,所以我怀疑这是问题所在。
请记住,序列化类必须具有默认(即无参数)构造函数。 如果你根本没有构造函数,那很好; 但是如果你有一个带参数的构造函数,你还需要添加默认的参数。
我有一个类似的问题,事实证明,序列化程序无法区分我使用相同名称的两个类(一个是另一个的子类)。 内部异常看起来像这样:
'类型BaseNamespace.Class1'和'BaseNamespace.SubNamespace.Class1'都使用命名空间''中的XML类型名称'Class1'。 使用XML属性为类型指定唯一的XML名称和/或名称空间。
其中BaseNamespace.SubNamespace.Class1是BaseNamespace.Class1的子类。
我需要做的是将一个属性添加到其中一个类中(我添加到基类中):
[XmlType("BaseNamespace.Class1")]
注意:如果你有更多层次的类,你也需要添加一个属性。
链接地址: http://www.djcxy.com/p/54897.html