我正在设计一个 Web 服务,它将根据给定对象的属性(例如“请求”)调用不同的外部 Web 服务。对这些 Web 服务的引用是通过 Visual Studio 2008 中的“添加 Web 引用”菜单添加的,如您所知,它为每个继承自 System.ServiceModel.ChannelBase<ISomeInterface>
的端点创建一个代理类。 (其中 ISomeInterface
是由特定服务的 WSDL 定义的端点)。
问题是我想将所有这些代理封装在一个 ServiceManager
中(例如)静态类,例如包含所有代理的内部列表,因此,一方面,对给定服务的所有调用都可以通过 ServiceManager
而不是分散在主应用程序周围,另一方面,可以让ServiceManager
知道稍后可能添加的新服务。通过简单添加对新代理类的引用。
我考虑过设计ServiceManager
喜欢
public static class ServiceManager
{
#region Properties
public static Dictionary<string, TProxy> ServiceList { get; private set; }
#endregion
}
但我不知道应该替换什么 TProxy
以便可以使用 ServiceManager.ServiceList["ServiceName"]
调用所有不同的代理。谁能帮我解决这个问题吗?
最佳答案
由于每个服务都实现不同的接口(interface),因此它必须是对象...除非您可以创建一个公共(public)基接口(interface),使代理继承该接口(interface),然后创建一个 List
为什么每个代理的类上不能只有一个属性?至少这样您就可以以强类型的方式访问代理。
关于wcf - 将 WCF 代理封装在静态类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6465737/