2012-05-11 64 views
0

在WCF服務引用中定義的一個相當複雜的對象RequestList也是同一服務引用中方法的輸入參數。 XML已經生成在客戶端,所以我們只需要XmlSerialize對象,然後反序列化客戶端的xml。嘗試使用給定類型創建新的XmlSerializer時引發異常。服務引用對象不序列化

XmlSerializer serializer = new XmlSerializer(typeof(RequestList)); 

引發InvalidOperationException:

Unable to generate a temporary class (result=1). 
error CS0030: Cannot convert type 'ServiceReference.Parameter[]' 
    to 'ServiceReference.Parameter' 
error CS0029: Cannot implicitly convert type 'ServiceReference.Parameter' 
    to'ServiceReference.Paramter[]' 

不宜陣列輕易序列化?爲什麼這個錯誤被拋出,我該如何解決?

+3

可以使用RequestList的粘貼定義,尤其是Parameter []字段/屬性。 –

+0

您是否檢查過您的對象以包含任何循環引用,因爲這可能是它失敗的原因之一。也請嘗試代碼XmlSerializer ser = new XmlSerializer(); ser.Serialize(OBJ,流);如果你想從流 – Rajesh

回答

0

我發現問題所在。顯然有某種錯誤。在RequestList類的定義中,有一個雙數組Parameter[][]的參數。顯然這會導致問題。修復方法是使其成爲單個陣列:Parameter[]。一旦我做到了,它就完美了。

0

我認爲這裏的問題與bug或其他東西沒有直接關係。您可能正在使用一個對象,或者該對象具有無法使用xml序列化進行序列化的屬性。 例如,Dictionary<T>不能被直接序列化;它給錯誤;爲了在xml序列化中使用Dictionary<T>,應該通過繼承字典來實現IXmlSerializable接口。

這可能不是這種情況,因爲我不知道你想要反序列化什麼。

+0

沒有字典中讀取它的XML字符串。只是一個非常大的int,bools,double,decimal和DateTime類型的結構。 DateTime類型是可序列化的,對嗎? – SaulBack