【发布时间】:2009-10-12 10:47:22
【问题描述】:
一般来说,我尽量避免在 WCF 合同中使用继承,更喜欢组合。
但是在以下情况下……
- 我的服务操作可能会导致以下两种情况之一:ResultA 和 ResultB。
- 响应消息中有一个布尔值/枚举来报告此结果。
- 响应消息中还有许多其他属性。其中一些仅在 ResultA 事件中相关,而一些仅在 ResultB 事件中相关。
我认为我的选择是:
- 拥有一个包含所有内容的单一响应消息协定,当属性不相关时,它们将保留为空。然后,客户端必须查看 bool/enum 以查看其 ResultA 还是 ResultB 并相应地忽略属性。
- 有 2 个响应消息合同,都继承自一个共享基础。一个代表 ResultA 及其相关属性,一个代表 ResultB 及其相关属性。
出于多种原因,我更喜欢选项 2,但它打破了组合优于继承的规则。
人们怎么看?
【问题讨论】:
标签: wcf inheritance message contract