【发布时间】:2016-07-28 17:18:15
【问题描述】:
在WCF中,为什么我们不能使用抽象类而不是接口作为服务契约,为什么我们在配置WCF服务时要在endpoint元素中指定契约中的所有服务契约(接口)?请帮忙。
【问题讨论】:
在WCF中,为什么我们不能使用抽象类而不是接口作为服务契约,为什么我们在配置WCF服务时要在endpoint元素中指定契约中的所有服务契约(接口)?请帮忙。
【问题讨论】:
ServiceContract 和 OperationContract 可以用在抽象类上,代码将编译成功,因为根据 C# 编译器没有任何问题。 但是在托管服务时,ServiceHost 将抛出异常,因为根据 WCF 规则 - 如果一个类已标记有 ServiceContract 属性,则另一个类不能从它继承。
底线 - 它不受支持。你需要使用接口。
【讨论】:
这涉及到 OOP 的基础。如果你使用抽象类,它会编译,但在运行时它会抛出一个异常,说
继承只能在接口类型之间使用。如果一个类被标记了ServiceContractAttribute,那么另一个服务类不能从它派生
这只有在接口的情况下才有可能。
【讨论】: