以编程方式更改WCF代理类的默认集合

问题描述:

我有一个应用程序,用户将连接到在其网络中的计算机上运行的一个或多个WCF服务。由于这些连接的地址在安装时未知,因此应用程序必须以编程方式连接到这些服务(即,我无法使用“添加服务参考”)。我使用下面的代码连接工作:以编程方式更改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的方法中返回什么类型? – 2013-05-14 16:12:53

它应该反序列化为由服务类的接口或序列化对象的属性的类型定义的类型。尝试改变接口/类的集合类型。

顺便说一下,你声明你不能使用Add service reference,因为在编译时服务端点地址是未知的,但是这不应该阻止你使用它。获取WSDL的副本并将其从本地WSDL文件导入Add service reference,然后在创建服务代理时指定实际的端点地址,如here所示。

+0

谢谢。除此之外,我还使用了您的评论:http://stackoverflow.com/questions/6119124/c-sharp-client-how-to-invoke-wsdl-file – 2013-05-14 19:00:13