0

我有以下 WCF Web 服务:

[ServiceContract]
interface IService
{
    [OperationContract]
    void SaveInwardDocument(InwardDocument document);
}

public class Serice:IService{
   void SaveInwardDocument(InwardDocument document){...};
}

[DataContract]
public class InwardDocument{
   [DataMember]
   public Citizen {get;set;}
   //some other enum properties
   [DataMember]
   public string Remarks {get;set;}
}

[DataContract]
public class Citizen{
   //Citizen proeperties
}

当我在基于上述服务的 wsdl 的 java 客户端中生成代理类时,我得到了类的类型CitizenRemarks属性的JaxBelement InwardDocument。当我尝试创建 asmx 服务的代理类时,情况并非如此。我该怎么做才能将字符串作为字符串并将自定义类作为复杂类型,而不是 JaxBelement?

4

1 回答 1

0

在挖掘了大量资源之后,尤其是这个这个,并意识到我不是唯一一个面临这个问题的人后,我发现有一个名为 ObjectFactory 的类是自动生成的,借助它我可以轻松创建某些 JAXBElement 实例作为输入传递给 WCF 服务函数。此类具有与从 WSDL 生成的 JAXBElement 的数量一样多的返回 JAXBElement 对象的公共实例方法。假设您有一个 JAXBElement LastName 输入。要将实际数据传递给此输入,您所要做的就是:

 ObjectFactory factory=new ObjectFactory();
 factory.createLastName("Gates");

这样,您在使用 wcf 服务时应该不会有任何问题。

于 2015-08-18T13:56:45.937 回答