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

C# 以编程方式更改WCF代理类的默认集合,c#,wcf,collections,C#,Wcf,Collections,我有一个应用程序,用户将连接到一个或多个WCF服务,这些服务运行在他们网络中的计算机上。由于这些连接的地址在安装时未知,因此应用程序必须以编程方式连接到这些服务(即,我不能使用添加服务引用)。我使用以下代码使连接正常工作: string url = "...the url..."; BasicHttpBinding binding = new BasicHttpBinding(); EndpointAddress address = new EndpointAddress

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

string url = "...the url...";
BasicHttpBinding binding = new BasicHttpBinding();            
EndpointAddress address = new EndpointAddress(url);
ILicenseService service = ChannelFactory<ILicenseService>.CreateChannel(binding, address);
string url=“…url…”;
BasicHttpBinding=新的BasicHttpBinding();
EndpointAddress地址=新的EndpointAddress(url);
ILicenseService service=ChannelFactory.CreateChannel(绑定,地址);

但是,我的服务类的一些成员返回元素的
可观察集合
。我知道如何使用高级设置在“服务引用”对话框中更改集合类型。但是,我无法找到一种通过编程设置此值的方法,以便我的客户知道如何将返回类型读取为
可观察集合
,而不是列表。有什么线索吗?

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


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

那么,您在ILicenseService的方法中返回的是什么类型?谢谢。除此之外,我还使用了您的评论: