Как мне обрабатывать классы и методы, чувствительные к регистру, из веб-службы С# в моем приложении VB.net

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

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

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

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

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

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

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

Спасибо


person CStroliaDavis    schedule 22.06.2011    source источник
comment
Решение состоит в том, чтобы исправить ваш процесс разработки, чтобы открытые типы не могли отличаться только в случае.   -  person John Saunders    schedule 22.06.2011
comment
Какую версию Visual Studio вы используете? Я пробовал некоторые вещи в VS 2010, и, похоже, эта проблема решается путем простого добавления увеличивающихся чисел к неоднозначным именам. Я не уверен, что это из-за версии VS или версии целевой платформы.   -  person Jan-Peter Vos    schedule 23.06.2011
comment
Я использую VS2010, и есть некоторые поля, в которые он автоматически добавляет числа, но некоторые из них, похоже, игнорируются. Я не уверен на 100%, почему он игнорирует те, которые делает.   -  person CStroliaDavis    schedule 23.06.2011
comment
У меня нет контроля над кодом веб-службы. Для нас это третья сторона.   -  person CStroliaDavis    schedule 23.06.2011


Ответы (1)


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

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

person Jon Seigel    schedule 23.06.2011