将多个接口组合到一个主界面中

时间:2014-06-26 10:31:26

标签: c# wcf interface

我想为我的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的情况下实现这一目标?

1 个答案:

答案 0 :(得分:1)

发布WCF服务时,您不能(也不应该)控制消费者用来为其创建客户端代理的接口类型。他们可以自由定义自己的界面或使用工具(来自WSDL)生成一个界面,并且只要它符合您的服务合同,它就会起作用。

避免使用IBroadcastHostFunctions来装饰ServiceContract的唯一可能原因是避免依赖System.ServiceModel,但是您已使用{{1}在IBroadcastHostFunctions上修饰方法}属性,因此该类型已需要OperationContract

继续将System.ServiceModel添加到ServiceContract,让您的消费者免费使用。