在.net web服务中使用/生成方法签名,使用int[]代替ArrayOfInt
本文关键字:使用 int ArrayOfInt 代替 方法 服务 web net | 更新日期: 2023-09-27 18:06:22
我有一个ASP。. NET web服务(.asmx
),其方法接收int
数组(int[]
)和可空的int
数组(int?[]
)作为参数。我还有一个测试web应用程序,通过一个服务引用来使用这个web服务。
问题是,每次我在web服务代码中更改某些内容,重新编译它并更新测试应用程序中的服务引用时,都会为测试应用程序中的web服务方法生成不同类型的参数。例如:
在第一次构建和服务更新时,Visual Studio在测试应用中生成的方法签名是:
void MyMethod(int[] firstParam, int?[] secondParam)
。
然后我做了一些改变,再做一次,得到如下内容:
void MyMethod(ArrayOfInt fistParam, ArrayOfInt1 secondParam)
(ArrayOfInt
相当于int[]
, ArrayOfInt1
相当于int?[]
)。
void MyMethod(ArrayOfInt1 firstParam, ArrayOfInt secondParam)
,
将ArrayOfInt
和ArrayOfInt1
交换(ArrayOfInt1
现在相当于int[]
, ArrayOfInt
现在相当于int?[]
)。
我真正想要的是使用简单的int[]
和int?[]
类型(不管我重新编译和更新服务引用多少次!)。我怎样才能做到这一点呢?
尝试使用wsdl.exe工具来生成web服务代理,而不是使用Visual Studio。
这个适合我!
我知道这是旧的,但我刚刚遇到了同样的问题。对我来说,区别在于添加了一个web参考而不是一个服务参考。
在VS中,执行以下操作:
- 右键单击,选择添加>服务引用
- 点击左下方高级按钮
- 点击左下方的添加Web引用按钮
- 添加URL和引用名称,然后单击添加引用
我的web参考正确地添加了int[]
参数的方法。
EDIT:这里有一个更好的答案,有漂亮的图片来说明!
EDIT 2:这个答案摆脱了ArrayOfXXX
到List<XXX>
的愚蠢和不使用传统技术,所以就我而言是双赢的。现在,如何在工具中做到这一点呢?还是只有可以通过直接编辑文件来完成?