WCF-如何从基类型向客户端公开强类型对象(不进行客户端强制转换?)

本文关键字:客户端 转换 对象 强类型 基类 类型 WCF- | 更新日期: 2023-09-27 17:58:47

我有一个WCF服务,需要返回不同类型的报价(即Quote1、Quote2、Quote3)--都继承自Quote

我的计划是公开一个单一的方法

Quote GetQuote(Message message);

然而,我强迫客户做一些类似的事情

if(quote为Quote1)elseif(报价为Quote2)等

如果不对每种报价类型使用不同的方法,是否有一种很好的方法来区分报价,而不必将客户端强制转换为每种类型?

有人对更好的方法有什么建议吗?

感谢

WCF-如何从基类型向客户端公开强类型对象(不进行客户端强制转换?)

如果您使用的是DataContracts,那么您可以用KnownTypeAttribute来装饰它们。

为每个Quote类型公开不同的方法,或者在客户端上执行强制转换-这就是公开基类型的全部意义。如果公开基类型并且需要在客户端上使用派生类型,则无法避免强制转换。

您还可以定义Quote类型的单个逻辑,它将满足您的所有需求(包括使用Quote数据的方法)——派生类型将覆盖某些功能。然后,您可以在服务器和客户端应用程序之间共享具有Quote定义的程序集,并使用多态性。