WCF-如何从基类型向客户端公开强类型对象(不进行客户端强制转换?)
本文关键字:客户端 转换 对象 强类型 基类 类型 WCF- | 更新日期: 2023-09-27 17:58:47
我有一个WCF服务,需要返回不同类型的报价(即Quote1、Quote2、Quote3)--都继承自Quote
我的计划是公开一个单一的方法
Quote GetQuote(Message message);
然而,我强迫客户做一些类似的事情
if(quote为Quote1)elseif(报价为Quote2)等
如果不对每种报价类型使用不同的方法,是否有一种很好的方法来区分报价,而不必将客户端强制转换为每种类型?
有人对更好的方法有什么建议吗?
感谢
如果您使用的是DataContracts
,那么您可以用KnownTypeAttribute
来装饰它们。
为每个Quote
类型公开不同的方法,或者在客户端上执行强制转换-这就是公开基类型的全部意义。如果公开基类型并且需要在客户端上使用派生类型,则无法避免强制转换。
您还可以定义Quote
类型的单个逻辑,它将满足您的所有需求(包括使用Quote
数据的方法)——派生类型将覆盖某些功能。然后,您可以在服务器和客户端应用程序之间共享具有Quote
定义的程序集,并使用多态性。