Как обрабатывать регистрозависимые классы и методы из веб-службы c # в моем приложении VB.net - PullRequest
4 голосов
/ 22 июня 2011

Я работаю над приложением VB.Net, которому нужен доступ к веб-сервису, который, я почти уверен, имеет бэкэнд C #. Как минимум, серверная часть предоставляет мне классы, которые различаются только по регистру, а в ряде этих классов есть свойства и методы, которые дифференцируются только по регистру.

VB.Net нечувствителен к регистру, и считает, что некоторые из этих элементов неоднозначны.

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

Вот несколько способов, которые я обдумал.

  1. Изменение сгенерированного кода для wsdl. Это создает проблемы при ответе, так как вывод xml больше не будет соответствовать требованиям веб-сервиса. Я думаю, что могли бы быть некоторые атрибуты, которые я мог бы использовать, чтобы переопределить это, но я не уверен, что они еще. Несмотря на это, этот веб-сервис часто обновляется, и я не хотел бы постоянно обновлять сервис каждый раз, когда обновлял его.

  2. Создание проекта оболочки csharp, в котором я предоставляю базовые классы с разными именами. Прежде всего через наследство. Хотя большой проблемой здесь была проблема со свойствами и методами, которые также различаются только по регистру.

Я уверен, что в какой-то момент я смогу заставить одно или другое из этих решений работать, но если у кого-то есть какие-либо более полезные предложения, о которых я не думаю, я был бы признателен за помощь.

Спасибо

1 Ответ

5 голосов
/ 23 июня 2011

Если веб-служба была разработана собственными силами, вы захотите пересмотреть методы разработки вашей компании;в частности, обеспечение того, чтобы все ваши общедоступные API .NET были CLS-совместимыми .

Если веб-служба не была разработана собственными силами или вы не можете вносить в нее изменения (клиентыуже использую его и т. д.), тогда я бы выбрал либо написание библиотеки-обертки C #, либо хотя бы централизацию вызывающего кода в новом (или существующем) проекте C # бизнес-уровня.Есть хороший шанс, что вы все равно захотите сделать такую ​​абстракцию вместо вызова веб-методов непосредственно из уровня приложения.

...