Ситуация:
У нас есть проект библиотеки, в котором содержится большая часть нашего кода для различных интеграций, над которыми мы работаем. Многие интеграции используют API веб-сервисов, и мой руководитель не хочет, чтобы в проект добавлялось 5 миллиардов ссылок на веб-сервисы.
Затем мы обычно добавляем ссылку на новый проект, копируем References.vb в решение и просто вызываем сгенерированный код. Не очень удобно, если в сервис вносятся изменения, но он работает.
Недавно я столкнулся с проблемой, когда мы должны использовать 3 веб-сервиса для одной и той же интеграции. 2 из них содержат одинаковые определения классов, однако они находятся в разных пространствах имен, потому что они принадлежат разным сервисам. Это стало проблемой для меня, потому что одна из служб ищет пользователя на основе идентификатора пользователя, а другая отбрасывает блоки пользователей. Оба возвращают объект или список, который в точности семантически одинаков. И мне нужно обрабатывать данные одинаково, независимо от того, пришли они из одного сервиса или другого.
Мое решение состояло в том, чтобы убрать дубликаты классов в службе и заменить их классами, унаследованными от общих базовых классов. Это позволило мне работать с обоими объектами, как если бы они были одинаковыми, однако для этого потребовалось изменить сгенерированный прокси-сервер веб-службы. Поэтому это изменение нужно будет вносить каждый раз, когда мне нужно восстановить прокси.
Мне любопытно, что вы все могли бы подумать, что лучшим решением было бы это.