将多个接口合并为一个主接口

本文关键字:接口 一个 合并 | 更新日期: 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,让你的消费者自由运行。

相关文章: