为什么在类中包装字典允许ASMX WebMethod使用它?

时间:2016-06-24 21:17:27

标签: vb.net web-services asmx webmethod

据我了解,由于Dictionary(Of String, String)实现了Dictionary,因此无法将IDictionary传递给ASMX Web服务。尝试这样做不仅导致该方法在尝试调用时抛出异常,而且在尝试在浏览器中转到Web服务URL时抛出异常:

  

类型System.Collections.Generic.Dictionary`2 [[System.String,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089],[System.String,mscorlib,Version = 4.0.0.0, Culture = neutral,PublicKeyToken = b77a5c561934e089]]不受支持,因为它实现了IDictionary。

但是,我发现如果我创建一个包含Dictionary属性的类,并将其作为参数传递给Web服务方法,它可以正常工作。

Public Class DictWrapper
    Public Property oDic as Dictionary(Of String, String)
End Class

<WebMethod()>
Public function ReadDic(oDictWrapper as DictWrapper) As Boolean
    Return oDictWrapper("SomeBoolean")
End Function

为什么这个例子有效?我可以用AJAX调用这个WebMethod,在包装的字典中传递不同数量的键和值,没问题。这与将字典作为WebMethod的参数有什么不同?

0 个答案:

没有答案