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

C#生成的代理方法不同于原始Java服务方法,c#,java,wcf,interop,C#,Java,Wcf,Interop,我有一个具有以下方法签名的Java服务: @WebMethod(operationName = "getContactList") public MyListClass getContactList(@WebParam(name = "myList") MyListClass myList) throws IllegalArgumentException { return myList; } public class

我有一个具有以下方法签名的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;
    }

}
我在生成的代理MyListClass中看不到任何地方包装此
列表

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

   public ContactOD[]  getContactList(ContactOD[] myList)
public MyListClass getContactList(MyListClass myList)
非常感谢你,
Adriana

Visual Studio中的代理生成器不会直接将Java列表映射到C#List,而是将其视为一个数组。在C#端,如果您希望使用泛型集合,最简单的方法是在别处使用List,然后在使用web服务方法时创建to/from T[]

List contacts=new List();
联系人。添加(新联系人(“Tim”,“0123456789”);
List returnValue=新列表(ProxyHolder.getContactList(contacts.ToArray());

生成WCF代理时,可以选择要使用的集合类型

在命令行中,适当的选项是
/collection:“
,其中是完全限定的类型名


从添加服务参考UI中,在高级选项下有一个下拉列表。

是的,我注意到了,但我的列表包装在另一个类(MyListClass)中。我希望在代理中也能看到该类,方法签名与java中的类似。C#请注意列表已包装,并且只显示MyListClass的内容,即ContactOD数组。问题是,我在生成时没有看到MyListClass,而是看到ContactOD数组(类的内容)
List<ContactOD> contacts = new List<ContactOD>();
contacts.Add(New ContactOD("Tim", "0123456789"));
List<ContactOD> returnValue = new List<ContactOD>(ProxyHolder.getContactList(contacts.ToArray());