SVCUTIL.EXE: Есть ли способ разделить мои классы Commons.xsd? (С #) - PullRequest
3 голосов
/ 24 марта 2011

В основном у меня есть следующий сценарий:

У меня есть 2 файла WSDL:

  • User.wsdl
  • Customer.wsdl

Оба этих wsdl ссылаются на Commons.xsd (Schema), чтобы они могли использовать Address ComplexType.

Затем я делаю svcutil.exe "User.wsdl" "Commons.xsd", чтобы сгенерировать код для пользовательского wsdl.Затем я выполняю svcutil.exe "Customer.wsdl" "Commons.xsd" для генерации кода для клиента. Wsdl.

Проблема заключается в следующем: как заставить svcutil поместить Address в собственное пространство имен "Commons"?В его нынешнем виде он создает тип адреса в обоих выходных файлах (User.cs и Customer.cs), которые вызывают конфликт имен, или если я указываю пространство имен, у меня есть два типа адресов, каждый в своем собственном пространстве имен.Это означает, что я не могу передать одну и ту же ссылку между Пользователем и Клиентом для адреса (иногда пользователь также является клиентом, поэтому у него одинаковые адреса).

Есть ли способ заставить svcutil разделитьАдрес в собственном пространстве имен?А также, если он может поместить его в свой собственный файл (Common.cs), это тоже будет здорово.Но я не вижу способа сделать это.

1 Ответ

2 голосов
/ 24 марта 2011

svcutil имеет аргумент / namespace, который позволяет отображать пространства имен wsdl в заданное пространство имен кода. Вы можете предоставить этот аргумент несколько раз, но он недостаточно хорошо документирован, поэтому вам, возможно, придется поэкспериментировать с ним ... вы можете указать подстановочный знак, но я не уверен, что вы можете выделить одно пространство имен и подстановочный знак остальное.

Я не уверен в этом, но я думаю, что если вы сделаете оба wsdl одновременно, я думаю, что они объединятся в один файл .cs ... возможно, это будет достаточно умно, чтобы не дублировать классы при этом точка.

Например,

svcutil.exe "User.wsdl" "Customer.wsdl" "Commons.xsd"  
/n:UserAddressNamespace,User.Address  
/n:*,User

Надеюсь, что это здорово, я бы хотел дать вам лучший ответ, но я давно не пользовался wsdl.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...