我有一個相當複雜的對象模型,我試圖使用WCF序列化。我遇到了一個問題,我可以在服務器上創建一個新實例並將其返回給客戶端,然後嘗試將同一個對象傳回,甚至使用DataContractSerializer序列化它將引發異常。錯誤使用WCF和DataContractSerializer
測試方法Server.Service.Test.SerializationTest.TestFilingSerialization引發異常:System.Runtime.Serialization.SerializationException:對MyNameSpace.MyObject類型的對象進行反序列化時出現錯誤。沒有設置屬性''類型''的方法
它沒有給我任何關於二傳手的信息我被認爲是失蹤了,儘管我已經試過尋找遺漏的二傳手的繼承層次結構,但是我不能似乎通過了這一點。 MyObject是我試圖序列化的對象上的一種屬性,這裏是有趣的部分。在二傳手該財產,我有一些代碼,看起來像這樣:
set
{
_backingField = value;
_backingField.IsDirtyManager.SetIsDirty();
NotifyPropertyChanged("MyProperty");
if (!ContainsType(_backingField.GetType()))
{
Aggregates.Add(_backingField);
}
}
如果我註釋掉Aggregates.Add它進入到下一個屬性,並拋出了同樣的異常那裏,踢球的是,它得到的經過其他屬性使用相同的代碼,在它遇到這個並且死亡之前,所以我不知道這個問題會是什麼。
任何人都會遇到真正的錯誤,因爲屬性名稱和類型沒有填寫在異常中,所以它看起來像錯誤必須是別的東西。如果我只是在客戶端上創建一個新實例,我可以反序列化和序列化沒有問題,所以這裏有一些我在這裏丟失的東西。任何想法尋找什麼?
編輯
我從字面上做只有這個:
- 創建實例
- 序列化
- 反序列
- 重新序列
- 死在這裏
因此,在序列化過程中,客戶端會發生這種情況嗎? – scmccart 2009-11-13 20:41:39
是的,完全跳過WCF,這就是發生了什麼,這是一個序列化問題。 – Nick 2009-11-13 21:04:41