我想为我的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
的情况下实现这一目标?
答案 0 :(得分:1)
发布WCF服务时,您不能(也不应该)控制消费者用来为其创建客户端代理的接口类型。他们可以自由定义自己的界面或使用工具(来自WSDL)生成一个界面,并且只要它符合您的服务合同,它就会起作用。
避免使用IBroadcastHostFunctions
来装饰ServiceContract
的唯一可能原因是避免依赖System.ServiceModel
,但是您已使用{{1}在IBroadcastHostFunctions
上修饰方法}属性,因此该类型已需要OperationContract
。
继续将System.ServiceModel
添加到ServiceContract
,让您的消费者免费使用。