Добрый день!
Есть клиент и сервис, с которым он взаимодействует. Всё хорошо работает, когда клиент обращается к единственному сервису:
using Client.ServiceReference1;
...
BackupMonitorClient proxy1 = new BackupMonitorClient()
proxy.GetFiles()
Однако появилась потребность использовать еще несколько сервисов с одинаковым контрактом (тот же самый сервис, только хостится на других машинах в домене). Соответственно, после добавления строчек
using Client.ServiceReference1;
using Client.ServiceReference2;
using Client.ServiceReference3;
появляется неднозначность при создании дополнительных прокси-классов:
BackupMonitorClient proxy2 = new BackupMonitorClient()
проблема решается добавлением названия пространства имен перед именем класса:
Client.ServiceReference2.BackupMonitorClient Service2 = new Client.ServiceReference2.BackupMonitorClient()
А теперь вопрос: клиент написан на WinForms и вся логика приложения написана в зависимости от того, какой сервис выбран на форме (например, показать список файлов на машине PC01). Хранить список прокси-классов в какой-нибудь коллекции и использовать обобщенную переменную proxy не получится, т.к. формально эти классы лежат в разных пространствах имен и имеют соответственно разные типы (хотя контракты служб у них одинаковые). Соотвественно, вызывать методы сервиса на стороне клиента не получится, т.к. не понятно к какому прокси-классу обращаться (proxy1 или proxy2):
//хотелось бы использовать вот так:
var proxy = new Object();
proxy = listBox1.SelectedValue;//определяем выбранный прокси-класс
proxy.GetFiles();//ошибка: "object" не содержит определения для "GetFiles" и не был найден метод расширения "GetFiles"
}
Есть ли какое-нибудь решение, чтобы обойти эту проблему? Использую VS2010 .NET Framework 4.0
Re: WCF Как реализовать в клиенте обработку нескольких сервисов