Silverlight ItemsSource和Web服务

时间:2010-03-29 14:13:35

标签: .net silverlight web-services

我有一个简单的Silverlight应用程序,它只是将DataGrid的ItemsSource设置为Web服务的结果。这一切都运行正常,但现在我试图让它更抽象。我想将参数传递给Web服务并返回List<Customer>List<Product>,例如,具体取决于参数。

但我似乎无法找到传回抽象列表的方法。它似乎必须是特定类型的列表。这是正确的吗?

谢谢,

AJ

1 个答案:

答案 0 :(得分: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
}

显然这个结构需要充实属性访问器等,但它应该给你一个想法。但是,我不建议这样做。相反,您应该为要检索的每种类型使用单独的服务。毕竟,如果您足够了解所需的类型作为参数,您就足以了解其他服务。