В более раннем проекте я добавил ссылку на службу в Visual Studio C# 2010, и код, созданный Studio, был таким (сторонняя веб-служба, вероятно, была создана с помощью WCF):Неожиданный рефакторинг при добавлении ссылки на службы в Visual Studio 2012 для Windows Desktop
System.Guid ServiceFunctionName(out string fileName, out int fileSize, System.Guid fileGuid, bool zip);
Этот код, приведенный выше, соответствует объявлению функции, которое также отображается в документации стороннего поставщика услуг.
Теперь, для другого проекта, я добавил ту же самую ссылку службы в новом приложении, на этот раз в Visual Studio 2012, а сгенерированный код был реорганизован в объект-ответ с исходными типами возврата, а два out
аргументы и объект запроса с двумя аргументами, которые были входные аргументы в бывшей объявлении функции:
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 для Windows Desktop? (Мне немного неловко о сгенерированном сгенерированном коде)