1

为什么使用DataContractSerializer或在具有属性DataContractJsonSerializer的类上序列化失败?Serializable

例外:“System.Runtime.Serialization.Json.DataContractJsonSerializer”不能被序列化。考虑用 DataContractAttribute 属性标记它,并用 DataMemberAttribute 属性标记你想要序列化的所有成员。如果类型是集合,请考虑用CollectionDataContract 属性”

DataContractSerializers 适用于DataContract/DataMember属性,但它也适用于没有这些属性Serializable的类,除非类中有一个属性失败,生成上述异常。

4

2 回答 2

1

我解决了这个问题,我的类中有一个私有属性 Serializer,它返回 System.Runtime.Serialization.Json.DataContractJsonSerializer

    private XmlObjectSerializer Serializer
    {
        get
        {
            _serializer = _serializer ?? GetSerializer(GetType());
            return _serializer;
        }
    }

即使它是私有的,DataContractJsonSerializer 也将它包含在序列化中。不仅是那个属性,还有私有字段。这就是您未指定 DataContract 和 DataMember 属性时的行为方式。

于 2013-02-06T10:53:14.173 回答
1

I think you don't need to put [Serializable] in POCO class. It will automatically serialize your object even without putting them in your class.

于 2013-02-06T09:50:34.800 回答