考虑以下情况:
我有多个接口,例如,,IService1
......所有接口都由一个类实现 - 。IService2
IService3
MainService
NetTcpBinding binding = new NetTcpBinding(SecurityMode.None, reliableSessionEnabled: true);
string address1 = "net.tcp://localhost:9000/ep1";
// create other addresses with ep2, ep3 and so on...
ServiceHost serviceHost = new ServiceHost(typeof(ServiceLibrary.MainService));
serviceHost.AddServiceEndpoint(typeof(IService1), binding, address1);
serviceHost.AddServiceEndpoint(typeof(IService2), binding, address2);
serviceHost.AddServiceEndpoint(typeof(IService3), binding, address3);
// and so on...
serviceHost.Open();
Console.WriteLine("Running...");
Console.ReadLine();
此时我有这个服务主机实例的多个端点。要创建客户端实例,我执行以下操作 -
NetTcpBinding binding = new NetTcpBinding(SecurityMode.None, reliableSessionEnabled: true);
string address = "net.tcp://...:9000/ep1";
ChannelFactory<ServiceLibrary.IService1> channelFactory = new ChannelFactory<IService1>(binding, address);
IService1 channel1 = channelFactory.CreateChannel();
// create other channel factories and other channels and now we have channel1, channel2, channel3
这些通道基本上是我可以调用函数的代理。但是这些代理是特定于接口的。channel1
不会调用任何其他方法,除了在IService1
.
我需要的是一个超级代理,它可以调用任何接口中定义的任何方法IService1
,IService2
等等IService3
。
有任何想法吗?
编辑:让一个接口继承所有其他接口是不可能的。让我们假设已经开发了服务,我所能做的就是修补服务主机和通道的创建。