2010-11-04 19 views
0

我們有一個類Asset的對象。該資產具有類型爲IList<AssetEntity>的接口成員EntityCollection。在.asmx Web服務中,我們將此資產對象序列化爲XML並返回此XML。如何在C#中對接口進行檢索?

但我們得到一個錯誤「無法序列類型的成員EntityCollection System.Collections.Generic.IList [AssetEntity]」

請幫助爲如何序列。

回答

0

只能對具體類型進行de/serialize。這些是程序中可以存在的唯一類型的實例。

+0

請解釋downvote。你對現實不滿意嗎? – leppie 2010-11-04 05:16:21

+0

我認爲問題出在物業/領域,而不是物業。 – 2010-11-04 05:23:52

2

問題是實際的對象類型(即實現IList<AssetEntity>可能不是一個可序列化的類型,解決方案將在Asset類中實現IXmlSerializable接口,並提供您自己的用於從XML序列化的實現。 AssetEntity列表,其序列爲XML元素(節點)的陣列應該做的伎倆

這裏有一個關於控制XML序列化網絡直播:http://www.microsoft.com/uk/msdn/nuggets/nugget/96/Using-custom-serialization-with-ASMX-V20-Web-Services.aspx

這是萬一你遇到麻煩的另一個有用的鏈接:論壇,您可以在asmx中找到與xml序列化相關的答案:http://social.msdn.microsoft.com/Forums/en-US/asmxandxml/threads/

+0

我們將嘗試此解決方案並讓您知道。 – mohang 2010-11-04 05:30:32

+0

問題是Asset的成員本身有更多的接口,他們到處都有。我們最終選擇的是爲這個對象編寫我們自己的XML序列化。 +1幫助。 – mohang 2010-11-08 07:24:05

0

嘗試使用普通數組而不是ILIst,或者僅使用List。

+0

原油但無可否認的有效。 – 2010-11-04 05:46:03

1

XML序列化有一些關於如何聲明集合類型屬性以便序列化的非常挑剔的規則。值得注意的是,IList<T>失敗,因爲它不擴展非通用ICollection

您可以通過暴露了兩個屬性來解決這個問題:一個公衆獲得只ICollection爲XML序列化消費裝飾有[XmlElement]和/或[XmlArrayItem]指定的集合中預計混凝土構件類型,並按照你的意願打印一個,並用[XmlIgnore]裝飾。

相關問題