Генерация прокси с svcutil.exe для другого (не по умолчанию) типа коллекции - PullRequest
2 голосов
/ 03 мая 2011

Я пытаюсь сгенерировать прокси для службы wcf через командную строку.При необходимости я использую * svcutil.exe .

Есть несколько сервисов, для которых мне нужно создать прокси.Пример команды показан ниже.Все идет наперекосяк о генерации прокси.

Для одного из прокси мне нужно иметь тип Collection в виде List вместо Array, который используется по умолчанию.Тем не менее, с явно упомянутым ниже, я не могу получить правильный тип коллекции.Получившийся прокси все еще имеет тип Array для коллекций.При выполнении этих команд ошибок нет.Не уверен, что происходит.

svcutil.exe  http://localhost/DealService.svc /noLogo               
/out:D:/Proxies/DealServiceReference.cs /n:*,MyApp.WinUI.DealServiceReference 
/ct:System.Collections.Generic.List`1

Кто-нибудь знает, почему я получаю тип коллекции по умолчанию, несмотря на явное упоминание?Кто-нибудь знает, как сделать это правильно?

(Подзапрос - все примеры, которые я видел для определения collectiontype как списка, таинственный `1 появляется в конце System.Collections.Generic.Список, но я не мог понять необходимость этого, а также я не мог получить где-нибудь обоснованное объяснение. Поэтому, если кто-то может пролить свет на это, было бы здорово.)

Ответы [ 2 ]

0 голосов
/ 09 февраля 2016

Внимание: -

svcutil.exe перезапишет существующие файлы на диске, если имена, указанные в качестве параметров, идентичны. Это может включать файлы кода, файлы конфигурации или метаданные. Чтобы избежать этого при генерации кода и файлов конфигурации, используйте переключатель /mergeConfig. Кроме того, переключатели /r и /ct для ссылок на типы используются для генерации контрактов данных. Эти переключатели не работают при использовании XmlSerializer.

Ссылка: https://msdn.microsoft.com/en-us/library/aa347733(v=vs.110).aspx

Это может быть ваша ситуация, проверьте используемый Сериализатор ...

0 голосов
/ 03 мая 2011

Вы должны получить тип List T в классах DataMember с этим переключателем. Для устранения неполадок попробуйте создать прокси-сервер, добавив ссылку на службу для этой службы и , настроив параметры коллекции, как показано здесь. Если ссылка на службу создана с ожидаемым списком T, тогда WSDL - это хорошо. В противном случае может случиться так, что SvcUtil не сможет разрешить сериализацию / десериализацию коллекций как Список T.

...