gpt4 book ai didi

C# 生成的代理方法与原始 Java 服务方法不同

转载 作者:行者123 更新时间:2023-12-01 16:09:13 25 4
gpt4 key购买 nike

我有一个具有以下方法签名的 Java 服务:

       @WebMethod(operationName = "getContactList")
public MyListClass getContactList(@WebParam(name = "myList") MyListClass myList) throws IllegalArgumentException {
return myList;
}

public class MyListClass implements Serializable{
List<ContactOD> innerList;

public List<ContactOD> getInnerList() {
if(innerList == null){
innerList = new ArrayList<ContactOD>();
}
return innerList;
}

public void setInnerList(List<ContactOD> innerList) {
this.innerList = innerList;
}

}

当我在 C# 中为此 Java 服务生成代理时,我得到如下方法签名:

   public ContactOD[]  getContactList(ContactOD[] myList)

我在生成的代理 MyListClass 中没有看到任何包装此 List<ContactOD> 的内容。 .

我需要对 java web 服务或代理的 C# 生成做什么,以便我可以在代理类中看到如下方法:

public MyListClass getContactList(MyListClass myList)

非常感谢,阿德里安娜

最佳答案

Visual Studio 中的代理生成器不会直接将 Java List 映射到 C# List,而是将其视为数组。如果您希望使用泛型集合,在 C# 方面最简单的做法就是在其他地方简单地使用 List,然后在使用 Web 服务方法时创建到 T[] 或从 T[] 进行创建。

即。

List<ContactOD> contacts = new List<ContactOD>();
contacts.Add(New ContactOD("Tim", "0123456789"));
List<ContactOD> returnValue = new List<ContactOD>(ProxyHolder.getContactList(contacts.ToArray());

关于C# 生成的代理方法与原始 Java 服务方法不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1838404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com