2010-07-12 43 views
4
[WebMethod] 
public void Test(KeyValuePair<string,string> details) 
{   
} 

我已经定义了上面的web方法。如何将通用KeyValuePair <Tkey,TValue>传递给WebMethod?

的KeyValuePair中定义 http://schemas.datacontract.org/2004/07/System.Collections.Generic

我怎样才能把它添加到我的WSDL自动生成的文件? 我有,否则我得到的WSDL文件空的定义来定义这种类型:

<s:complexType name="KeyValuePairOfStringString" /> 
+1

+1 - 这让我难以置信 - 我希望有人有一个体面的解决方案。 – 2010-07-12 13:58:46

回答

2

对于特定的问题,我建议你改变签名

public void Test(string key, string value) 

,因为我已经从来没有Web服务与泛型很好地搭配。如果您有其他任何具有类似问题的方法,则可以使用自动生成的代理类,或者将对象作为对象传递并将其转换回Web方法。

+1

这真的没有用,因为我的目标是通过一个List 实际上我开始使用dicitonary,然后降级到列表。 列表actualy工作,但问题仍然与KeyValuePair 这是不正确的解析wsdl - 我的猜测是因为我错过了它的定义从 http://schemas.datacontract.org/2004/07/System.Collections.Generic 问题是 - 这个链接似乎被打破,我也不知道如何将它添加到我的web服务 - 为了让wsdl使用它来找出KeyValuePairOfStringString的真正含义。 – 2010-07-15 07:35:26

+0

我的临时解决方案是手动创建一个名为KeyValuePairOfStringString的类,但后来我还需要KeyValuePairOfStringLong和KeyValuePairOfSomeEnumSomeOtherClass 这相当丑陋! :( – 2010-07-15 07:36:56

+0

对不起,我忍不住 - 一定要重新访问这个帖子,让我们知道,如果你找到一个更好的解决方案! – 2010-07-15 09:57:39

1

我也有这个问题。看起来我现在必须创建一个特定的类。

+0

是的,没有办法解决这个问题,据我所知。 – 2010-10-31 11:56:59

相关问题