为什么序列化在使用DataContractSerializer
属性的类上使用DataContractJsonSerializer
或Serializable
时失败?
例外: “System.Runtime.Serialization.Json.DataContractJsonSerializer”不能 被序列化。考虑使用DataContractAttribute标记它 属性,并标记要用序列化的所有成员 DataMemberAttribute属性。如果类型是集合,请考虑 用CollectionDataContractAttribute“
标记它
DataContractSerializer
适用于DataContract
/ DataMember
属性,但它也适用于没有这些属性的类,除非类中有Serializable
属性失败,产生上述例外。
答案 0 :(得分:1)
我认为您不需要在POCO类中放置[Serializable]。它会自动序列化你的对象,甚至不会把它们放在你的课堂上。
答案 1 :(得分:1)
我解决了这个问题,我的类中有一个私有属性Serializer,它返回System.Runtime.Serialization.Json.DataContractJsonSerializer
private XmlObjectSerializer Serializer
{
get
{
_serializer = _serializer ?? GetSerializer(GetType());
return _serializer;
}
}
即使它是私有的,DataContractJsonSerializer也会将其序列化。不仅仅是那个属性,还有私人领域。这是它在您未指定DataContract和DataMember属性时的行为方式。