0

我们可以将通用列表(列表)作为参数发送给WCF OperationContract吗?我们可以将通用列表(List <customObject>)作为参数发送给WCF OperationContract吗?

好像做到这一点的唯一方法是封装的列表作为另一个类中的数据成员,并指定类作为DataContract:

但是,这不看我的权利。有没有其他方法?

EDIT1:
旨在签名:

[OperationContract] 
List<int> OperationName(List<CustomObject> objects); 

这转化为CustomObject []在客户端。我目前从我的客户端通过CustomObject [],它工作正常,但我想知道为什么我不能通过

List <CustomObject> 

,给了我一个编译错误,说有这需要的功能没有重载版本指定的参数(类型不匹配误差)

编辑2:
相关问题:
1)I应该能够从服务本身进行控制。如果我将我的服务暴露给整个世界,而且wsdl/Proxy是他们知道OperationContract签名的唯一方式?
2)如果我想在同一服务合同的不同运营合同中使用System.Array和System.Generic.List,该怎么办?

+0

更多详情您可以共享该国税发没有工作合同opertaion预期的签名? – Dhawalk 2013-03-26 16:28:50

+0

编辑与签名*的问题,感谢 – Gadam 2013-03-26 16:50:45

+0

这个问题是非常相似的什么张贴在 http://stackoverflow.com/questions/8445502/list-vs-arrays-in-a-generated-proxy-class -in-c-sharp – Dhawalk 2013-03-26 16:59:29

回答

2

列表是一种高级类型,可能不适用于所有编程范例。在所有的编程范例中,数组可以用于比较。因此在默认情况下,翻译将落入代理数组wsdl

现在在这种情况下,如果您确定您的客户端是.Net,则可以将客户端更改为使用List。由于该服务并不知道客户端的编程语言是什么,因此客户机决定使用列表还是数组的正确设置是svcutil的当前设计。如果您将此设置提供服务,则排除不具有列表

概念的客户端第二个问题,只要您的操作合同名称不同,您就可以使用数组并在同一个服务中以特别的方式列出。另请注意,OOP概念在SOA中受到限制,这意味着您不能拥有多态方法。

以下问题有关于OOP和SOA

WCF Object Design - OOP vs SOA

+0

非常好的解释,谢谢。 “...现在在这种情况下,如果你确定你的客户端是.Net,你可以改变客户端使用列表”......无论如何,我的.Net客户端可以知道他可以使用列表,而我没有告诉他?我想人们会期待这样的事情。无论如何,非常感谢让我的许多恶魔休息......目前;) – Gadam 2013-03-26 18:51:13

相关问题