我正在为 Web 服务编写一个“通用”客户端,但遇到了一个意想不到的问题。我通过检索 Web 服务 WSDL 为客户端动态生成代码,并使用以下(稍微简化)代码来生成客户端代码:
ServiceDescription serviceDescription = ServiceDescription.Read(xmlTextReader(WSDL));
ServiceDescriptionImporter descriptionImporter = new ServiceDescriptionImporter();
descriptionImporter.ProtocolName = "Soap";
descriptionImporter.Style = ServiceDescriptionImportStyle.Client;
CodeCompileUnit codeCompileUnit = new CodeCompileUnit();
CodeDomProvider codeDomProvider = CodeDomProvider.CreateProvider("CSharp");
codeDomProvider.GenerateCodeFromCompileUnit(codeCompileUnit, Console.Out, new CodeGeneratorOptions());
我正在使用一个简单的 WCF Web 服务对此进行测试,该服务公开了两种方法:
[OperationContract]
int GetInteger();
[OperationContract]
string GetString();
如果我检查客户端生成的代码,我可以看到 GetString() 返回一个字符串,但 GetInteger() 方法返回 void!我认为这与值和引用类型有关。有没有办法强制代码生成器让 GetInteger() 方法返回一个 int?