将多个接口合并为一个主接口
本文关键字:接口 一个 合并 | 更新日期: 2023-09-27 18:10:32
我想为我的WCF服务声明多个接口。通过实现这些接口,应该将它们整合到一个主接口中。这在Visual Studio中工作,但是当我启动WCF服务时,它崩溃了,因为多个接口缺少ServiceContract
属性。我不想给他们添加这个属性,因为客户端应该只使用我的主界面,它有ServiceContract
属性。
这是其中一个小接口:
public interface IBroadcastHostFunctions
{
[OperationContract]
void SubscribeToBroadcasts();
[OperationContract]
void UnsubscribeFromBroadcasts();
}
这是主界面,看起来应该是这样的:
[ServiceContract(CallbackContract = typeof (IHostFunctionsCallback))]
public interface IHostFunctions : IBroadcastHostFunctions
{
}
有没有人知道如何实现这一点,而不添加ServiceContract
属性到IBroadcastHostFunctions
?
当发布WCF服务时,您不能(也不应该)控制消费者用来为其创建客户端代理的接口类型。他们可以自由地定义自己的接口或使用工具(从WSDL)生成一个接口,只要它符合您的服务契约,它就可以工作。
避免用ServiceContract
装饰IBroadcastHostFunctions
的唯一可能原因是避免对System.ServiceModel
的依赖,但您已经用OperationContract
属性装饰了IBroadcastHostFunctions
上的方法,因此该类型已经需要System.ServiceModel
。
继续把ServiceContract
添加到IBroadcastHostFunctions
,让你的消费者自由运行。