WCF。如何在wcf服务中使用泛型方法?我写了这段代码:[OperationContract]voidAddItem(Titem);但出现以下错误:类型“T”无法作为模式类型导出,因为它是开放泛型类型。只有当所有泛型参数类型都是实际类型时,才能导出泛型类型。你根本做不到。这是不可能的,因为SOAP不支持它。请参阅这篇文章,其中提到了如何通过创建一个被调用的中间本地对象并在调用WCF操作之前转换该对象来绕过泛型。你不应该尝试这样做。在支持SOAP的Web服务中,发布WSDL时需要知道所有类型,以便客户端可以生成代理。SOAP规范中根本不存在泛型。SOAP被设计为可互操作,并非所有语言都存在泛型。正如所有其他人已经提到的,WCF和SOAP不支持这一点。这里有一个要点:在客户端和服务器之间来回传递的任何内容都必须在XML模式文档中表达。XMLSchema支持所有常见的原始类型,如string、int、datetime——它支持由这些原始类型组成的复杂类型,并且它支持继承。但是XML架构不支持泛型——因此通过WCF和SOAP交换的任何东西都不是泛型的——你只需要使用具体的非泛型类型。我不知道有什么办法。这是一个限制,您现在必须忍受它。可以使用数据协定中的有界泛型类型,但必须是服务协定中的特定类型参数,并且指定类型参数具有有效的数据协定此错误表明不允许展开类型。可能允许的是:[OperationContract]voidAddItem(Titem)whereT:MyBaseType;当然,所有继承的类型都应该添加KnownType属性。以上就是C#学习教程:WCF。服务总法分享的所有内容,如果对您有用,需要进一步了解C#学习教程,希望您多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
