反映类型时出现错误

使用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

上一篇: There was an error reflecting type

下一篇: C# parameters date based on day of week