2010-06-08 105 views
0

我想使用ASP.NET WebServices創建一個簡單的留言簿Web服務。參數對象的類型[類型]不是原始的

當試圖序列化對象的列表,我得到以下異常:

System.InvalidOperationException: The type of the argument object 'GuestBookService.GuestBookEntry' is not primitive. 

我怎樣才能解決這個問題?

+3

能否請您發佈一些代碼周圍的行拋出這個錯誤?很難單獨診斷。 – 2010-06-08 01:58:59

回答

1

我有同樣的確切的錯誤,但在我的情況下,解決方案是不同的。 我的錯誤是我創建了一個返回基類類型的Web方法,並試圖返回派生類。

public BaseClass MyMethod() { /*...*/ } 

我會嘗試返回BaseClassDerivativeA,BaseClassDerivativeB等加入了自己的田基類的字段中的派生類。在這個意義上,我注意到多態性似乎是not supported

我已經將我的派生類推廣到一個類,從而在返回類型中刪除了這種多態。這解決了我的錯誤。

2

如果GuestBookService是一個子類和屬性抱着它是它的父類的類型,那麼你必須給串行額外的類型是這樣的:

Type[] extraTypes = {typeof(GuestBookService)}; 
XmlSerializer serializer = new XmlSerializer(typeof(DataContainerClass),extraTypes); 
+0

由於某些原因,即使在父類中使用了'XMLInclude'和'KnownType',我仍然必須這樣做,以便在嘗試從Android應用程序與WCF服務通信時清除錯誤。 – 2013-08-15 16:23:23

相關問題