2010-03-29 34 views
1

我有一個簡單的Silverlight應用程序,它只是將DataGrid的ItemsSource設置爲Web服務的結果。這一切都行得通,但現在我試圖讓它更抽象。我想將參數傳遞給Web服務,例如根據參數返回List<Customer>List<Product>Silverlight項目來源和網絡服務

但我似乎無法找到一種方式來傳回抽象清單。它似乎必須是一個特定類型的列表。這是正確的嗎?

感謝,

AJ

回答

2

Web服務定義必須知道的返回是什麼結構,使得它知道哪些字段,在SOAP信封,包括讓用戶到該服務知道什麼期待。如果你想返回一個或另一個你應該使用2個不同的服務或創建一個可以代表兩個並返回一個集合的類型,那麼你必須把它包裝在客戶端,這樣你才能隱藏細節不涉及具體用途。

例如,

struct CustomerOrProduct 
{ 
    ItemType type = ItemType.Customer; // This indicates the type that the struct is currently representing 

    string name;  // This is for products and customers 
    string address; // This is for customers only 
} 

顯然,這個結構需要與屬性訪問器等充實,但它應該給你的想法。不過,我不建議這樣做。相反,您應該爲每個要檢索的類型使用單獨的服務。畢竟,如果您足夠了解將所需類型作爲參數傳遞給您,您就足夠了解調用不同的服務。

+1

同意 - 保持分開。然後你的客戶就會知道到底期望什麼。無論如何,大多數語言都不會允許重載。 – Ryan 2010-03-29 17:19:07