【问题标题】:Why can't we use abstract class instead of interface in WCF?为什么我们不能在 WCF 中使用抽象类而不是接口?
【发布时间】:2016-07-28 17:18:15
【问题描述】:

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

【问题讨论】:

    标签: c# wcf


    【解决方案1】:

    ServiceContract 和 OperationContract 可以用在抽象类上,代码将编译成功,因为根据 C# 编译器没有任何问题。 但是在托管服务时,ServiceHost 将抛出异常,因为根据 WCF 规则 - 如果一个类已标记有 ServiceContract 属性,则另一个类不能从它继承。

    底线 - 它不受支持。你需要使用接口。

    【讨论】:

    • 嗯,我认为未说明的事实是您不能在服务合同中支持状态,而抽象类允许这样做。
    【解决方案2】:

    这涉及到 OOP 的基础。如果你使用抽象类,它会编译,但在运行时它会抛出一个异常,说

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

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

    【讨论】:

    • 你能告诉我你为什么拒绝我的回答吗?如果对您来说描述性不够,我应该删除它吗?
    • 不确定谁投了反对票,但这可能与您声称这涉及 OOP 的核心有关,但不要详细说明这意味着什么。如果您删除了该特定评论,那么您的答案就更重要了。
    猜你喜欢
    • 2012-08-20
    • 2013-09-21
    • 1970-01-01
    • 2020-07-06
    • 2014-07-23
    • 2012-04-24
    • 2012-01-23
    • 2011-01-10
    • 1970-01-01
    相关资源
    最近更新 更多