2016-03-06 3 views
0

Используя Dynamic Proxy namespace, я пытаюсь создать и использовать службу WCF динамически. Я объявил контракт, как показано ниже:некорректная последовательность параметров в динамически сгенерированном коде

[OperationContract] 
long GetStrings(string sinput, int n, out List<String> lstStrings); 

на стороне клиента, я собираю информацию, как показано ниже:

 MethodInfo getStrings = proxyType.GetMethod("GetStrings"); 
     Type strType = getStrings.GetParameters()[0].ParameterType; 
     Type strType1 = getStrings.GetParameters()[1].ParameterType; 
     Type strType2 = getStrings.GetParameters()[2].ParameterType; 

Название типов поступают следующим образом:

strType = "String[]&" 
strType1 = "String" 
strType2 = "int" 

Мои вопросы:

  1. Почему порядок p араметры меняются, то есть параметры, определенные как «выход», поступают раньше других?
  2. Как можно исправить порядок параметров для метода?
  3. Как я могу сделать наш параметр в List вместо String []?

Заранее спасибо.

ответ

0

Использование вне параметров не очень идиоматично в WCF. Обычно вам лучше обернуть две части возвращаемой информации (длинную и последовательность) в одном классе ответа.

Однако, если вам действительно нужны внешние параметры по какой-то причине, то я считаю, что он поддерживается, когда bodystyle «завернут» (или, может быть, «wrappedresponse»), но не тогда, когда он по умолчанию «голый».

https://msdn.microsoft.com/en-us/library/system.servicemodel.web.webinvokeattribute.bodystyle(v=vs.110).aspx

Я считаю, что свидетельствует о том, что клиентский код будет когда-либо получить список показывает непонимание того, как WCF и SOAP работы. Прокси-сервер на стороне клиента создается путем чтения WSDL, сгенерированного службой. WSDL не указывает типы C#, он определяет типы схем XML. Последовательность в XML-схеме представлена ​​массивом C#, и именно так оно и есть. Если вам нужен список C#, вам нужно обернуть необработанные прокси-серверы в классе адаптера вашего собственного дизайна.

+0

Спасибо !!! Объяснить это. –