【发布时间】:2015-07-26 05:32:30
【问题描述】:
在之前的项目中,我在 Visual Studio C# 2010 中添加了一个服务引用,Studio 生成的代码是这样的(第三方 Web 服务可能是用 WCF 创建的):
System.Guid ServiceFunctionName(out string fileName, out int fileSize, System.Guid fileGuid, bool zip);
上面的代码与服务第三方供应商文档中也出现的函数声明相匹配。
现在,对于另一个项目,我在新应用程序中添加了完全相同的服务引用,这次是在 Visual Studio 2012 中,生成的代码已被重构为具有原始返回类型和两个 @987654322 的响应对象@arguments 和一个请求对象,其中两个参数是前一个函数声明中的输入参数:
AppNamespace.ServiceReferenceName.ServiceFunctionNameResponse ServiceFunctionName(AppNamespace.ServiceReferenceName.ServiceFunctionNameReRequest request);
public ServiceFunctionNameRequest(System.Guid fileGuid, bool zip)
{
this.fileGuid = fileGuid;
this.zip = zip;
}
public ServiceFunctionNameResponse(System.Guid ServiceFunctionNameResult, string fileName, int fileSize)
{
this.ServiceFunctionNameResult = ServiceFunctionNameResult;
this.fileName = fileName;
this.fileSize = fileSize;
}
在重构函数附近的生成代码中也有这个注释,这有点道理,因为有问题的函数返回 3 个值:
// CODEGEN: Generating message contract since the operation has multiple return values.
为什么我在 VS 2010 和 VS 2012 中得到不同的函数声明?
这是我可以通过 Visual Studio 2012 for Windows Desktop 中的某些设置以某种方式控制的吗? (我对调整生成的代码有点不安)
【问题讨论】:
标签: c# visual-studio-2012 service-reference