Я пытаюсь создать класс C #, который может вызывать одни и те же методы для одних и тех же классов, но классы могут исходить из двух разных ссылок на веб-сервисы. Я обращаюсь к SomeWebService
и SomeWebServiceAlt
, где они имеют одинаковые классы, но находятся на разных серверах. Цель состоит в том, чтобы сначала попытаться использовать методы из SomeWebService
, а если он выпадет, попробовать SomeWebServiceAlt
. Я надеялся получить какой-то общий класс для доступа к любому веб-сервису, но у меня возникли проблемы с ограничениями типов, потому что нет никаких общих интерфейсов или базовых классов для различных классов, которые я использую из любой ссылки. То есть я использую ConnectionClass
как из пространства имен SomeWebService
, так и из пространства имен SomeWebServiceAlt
, но два класса ConnectionClass
не рассматриваются как связанные в C #, поэтому я не могу просто сказать where TClass : CommonBaseClassAcrossWebServices
. Как мне это сделать? Я заканчиваю тем, что повторяю код и делаю:
if (typeof(SomeWebService.ConnectionClass) == typeof(TConnection))
{ ... }
else if (typeof(SomeWebServiceAlt.ConnectionClass) == typeof(TConnection))
{ ... }
Это кажется действительно излишним и грязным. Я использую .NET 3.5, и у меня нет контроля над двумя веб-службами. В этом разница между моим вопросом и похожими вопросами, которые я видел здесь: другие люди контролировали веб-сервисы.
Я чувствую, что мое решение в конечном итоге будет использовать отражение, чтобы каким-то образом проверить, существует ли ожидаемый метод, и затем вызвать этот метод в любом классе веб-службы, с которым я работаю.