C# 具有可配置的WCF服务代理

C# 具有可配置的WCF服务代理,c#,wpf,web-services,wcf,C#,Wpf,Web Services,Wcf,我正在编写一个基本的WPF GUI来连接到WCF服务并使用一个接口。到目前为止,我已经通过创建一个服务引用连接到测试系统,为我想要使用的测试服务输入URI,它为我找到接口并通过服务引用创建代理 当您运行GUI应用程序时,我希望这样做是为了让用户能够选择一个环境—开发、测试或生产,然后让GUI根据所选的环境连接到适当的WCF服务 如何执行此操作?您可以像这样覆盖端点: client.Endpoint.Address = new EndpointAddress(GetAddressForCurren

我正在编写一个基本的WPF GUI来连接到WCF服务并使用一个接口。到目前为止,我已经通过创建一个服务引用连接到测试系统,为我想要使用的测试服务输入URI,它为我找到接口并通过服务引用创建代理

当您运行GUI应用程序时,我希望这样做是为了让用户能够选择一个环境—开发、测试或生产,然后让GUI根据所选的环境连接到适当的WCF服务


如何执行此操作?

您可以像这样覆盖
端点

client.Endpoint.Address = new EndpointAddress(GetAddressForCurrentMode())
另一种方法是编写一个方法,可能是一个扩展方法,它接受服务契约和实现类。此外,它还接受配置名称或端点:

public static TClient GetServiceClient<TClient, TContract>(string endpoint)
    where TClient : ClientBase<TContract>
{
   // Construct client
}
publicstatictclientgetserviceclient(字符串端点)
其中TClient:ClientBase
{
//构造客户端
}
要构造客户端,请使用
BaseClient
重载()之一

然后,要使用客户端,请正常使用上述方法:

using(var client = ServiceInterop.
    GetServiceClient<MyClient, IMyContract>("http://foo.bar"))
{
    // Consume client
}
使用(var client=ServiceInterop)。
GetServiceClient(“http://foo.bar"))
{
//消费客户
}

您的环境之间有什么不同?只是服务URL?GUI知道URL和环境之间的连接吗?只知道服务URL是的,如果我在配置中的某个地方定义了URL和环境之间的连接,它才会知道URL和环境之间的连接