2013-05-14 2 views
0

У меня есть приложение, в котором пользователи будут подключаться к одной или нескольким службам WCF, работающим на компьютерах в своей сети. Поскольку адрес этих подключений неизвестен на момент установки, приложение должно программно подключиться к этим службам (т. Е. Я не могу использовать ссылку Add Service Reference). У меня есть соединение работает, используя следующий код:Программное изменение коллекции по умолчанию для прокси-класса WCF

string url = "...the url..."; 
BasicHttpBinding binding = new BasicHttpBinding();    
EndpointAddress address = new EndpointAddress(url); 
ILicenseService service = ChannelFactory<ILicenseService>.CreateChannel(binding, address); 

Однако некоторые из членов моего класса службы возвращают ObservableCollection элементов. Я знаю, как изменить тип коллекции в диалоговом окне «Ссылка на службу», используя «Дополнительные настройки». Тем не менее, я не могу найти способ установить это значение программно, чтобы мой клиент знал, что он будет читать возвращаемый тип как ObservableCollection вместо списка. Любые подсказки?

+0

Итак, какой тип вы возвращаете в своем методе на ILicenseService? –

ответ

0

Он должен десериализоваться по типу, который определяется интерфейсом класса обслуживания, или типу свойства сериализованного объекта. Попробуйте просто изменить тип коллекции на интерфейсе/классе.

Кстати, вы заявили, что не можете использовать Add service reference, потому что адрес конечной точки службы неизвестен во время компиляции, но это не должно мешать вам использовать его. Получите копию WSDL и импортируйте ее в Add service reference из локального файла WSDL, затем при создании прокси-сервера службы укажите фактический адрес конечной точки, как показано на рисунке here.

+0

Спасибо. Я использовал ваш комментарий в дополнение к этому: http://stackoverflow.com/questions/6119124/c-sharp-client-how-to-invoke-wsdl-file –

Смежные вопросы