为什么我们不能在WCF中使用抽象类而不是接口?

时间:2016-07-28 17:18:16

标签: c# wcf

在WCF中,为什么我们不能使用抽象类而不是接口作为服务契约?为什么我们应该在配置WCF服务时在端点元素中指定合同中的所有服务契约(接口)?请帮忙。

2 个答案:

答案 0 :(得分:4)

ServiceContract和OperationContract可用于抽象类,代码将成功编译,因为根据C#编译器没有任何错误。 然而托管服务时,ServiceHost 将抛出异常,因为根据WCF规则 - 如果某个类已使用ServiceContract属性标记,则另一个类无法从中继承。

底线 - 不支持。您需要使用接口。

答案 1 :(得分:2)

这是OOP的基础。如果您使用抽象类,它将编译,但在运行时它将抛出一个异常说

  

继承只能在接口类型中使用。如果一个类用ServiceContractAttribute标记,那么另一个服务类不能从它派生

只有在接口的情况下才有可能。