客戶端有一個非常古老的.net 1.1應用程序,他們需要一個服務。我在4.0中創建了一箇中間件,並且試圖返回數據。我建立的類使用ArrayLists,因爲.net 1.1將無法訪問通用列表。當客戶端使用我的代碼時,ArtayLists會以ArrayOfAnyType的形式出現,並且每個都必須在CLIENT端初始化,儘管我已在Sub New()中初始化它們。我不想讓客戶必須初始化每個數組列表。這裏是不起眼的代碼...爲什麼ArrayLists不能在Web服務中初始化?
<Serializable()> _
Public Class XApplication
Public Sub New()
_People = New ArrayList
_PhysicalHouseholds = New ArrayList
_TaxReturns = New ArrayList
End Sub
Public Property People() As ArrayList
Public Property PhysicalHouseholds() As ArrayList
Public Property TaxReturns() As ArrayList
End Class
嘗試使用XmlInclude屬性來定義類的類型,但它沒有效果。要清楚,我不能使用WCF。我必須使用網絡服務。
我很感謝斯圖爾特的回答。但是,我很困惑。雖然我從來沒有傳過一個ArrayList,但我已經將類與對象一起傳遞,似乎他們會跑入相同的問題,但沒有。 –
Apols - 我可能不會正確理解這一點。我可以確認您正在發佈服務(.Net 4,但使用@WebService),然後將其作爲1.1 Web引用使用,並將其留給嚮導以生成代理類。如果您不共享類型,那麼在服務器上使用的技術通常無關緊要 - 客戶端將從WSDL創建自己的代理)。您可以嘗試在服務器上公開一個'List' - 1.1客戶端應該創建自定義類(儘管名字很瘋狂)以反序列化數據。 –
StuartLC
你描述的是正確的。我剛回去檢查一些舊代碼,我通過網絡服務發送了一個課程。該類具有屬於類的屬性。在sub新我初始化這些類。當我在另一端(消耗代碼)獲得它時,我只需要立即實現頂級課程。我不需要初始化所有屬於類的屬性。區別在於這些是類而不是數組列表,但我仍然不需要在使用代碼中實例化它們。 –