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

时间:2013-05-14 13:44:20

标签: c# wcf collections

我有一个应用程序,用户将连接到在其网络中的计算机上运行的一个或多个WCF服务。由于在安装时不知道这些连接的地址,因此应用程序必须以编程方式连接到这些服务(即,我不能使用“添加服务引用”)。我使用以下代码进行连接:

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

但是,我的服务类的一些成员返回ObservableCollection个元素。我知道如何使用“高级”设置更改“服务引用”对话框中的集合类型。但是,我无法想出一种以编程方式设置此值的方法,以便我的客户端知道将返回类型读为ObservableCollection而不是List。有线索吗?

1 个答案:

答案 0 :(得分:0)

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

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