2013-02-06 67 views
1

爲什麼在具有Serializable屬性的類上使用DataContractSerializerDataContractJsonSerializer序列化失敗?DataContractSerializer/DataContractJsonSerializer在序列化具有Seri​​alizable屬性的類時失敗

例外: 「System.Runtime.Serialization.Json.DataContractJsonSerializer」不能 被序列化考慮與DataContractAttribute 屬性將其標記和標記所有你想要的序列化與 DataMemberAttribute屬性及其成員的如果。該類型是一個集合,考慮 與CollectionDataContractAttribute」與DataContract/DataMember屬性標記它

DataContractSerializer的作品很好,但它也可以用類es沒有這些屬性,除非在類中有一個Serializable屬性失敗,產生上述異常。

+0

你能展示你想要序列化的類嗎? – masterlopau

回答

1

我解決了這個問題,我在我的類中的私有財產串行返回System.Runtime.Serialization.Json.DataContractJsonSerializer

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

即使它是私有的,DataContractJsonSerializer系列化incldue它。不只是那個財產,而是私人領域。這是它沒有指定DataContract和DataMember屬性時的行爲。

1

我認爲你不需要把[Serializable]放在POCO類中。它會自動序列化你的對象,即使不把它們放在你的課堂上。

+0

是的,如果序列化沒有任何屬性,那麼這就是問題所在,爲什麼不使用Serializable屬性? – mdcuesta

+0

這裏是關於datacontract vs serializable的文章,你可以在這裏找到答案。 http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/be796bd0-2502-4bd3-96d9-60bf7d68930d – masterlopau

+0

謝謝,我會看看.. – mdcuesta

相關問題