WCF - 如何从基类型向客户端公开强类型对象(没有客户端转换?)

时间:2011-06-09 02:13:59

标签: c# wcf inheritance casting

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

我的计划是公开一种方法

Quote GetQuote(Message message);

然而,我迫使客户做这样的事情

if(quote is Quote1) elseif(引用是Quote2)等

如果没有针对每种报价类型使用不同的方法,是否有一种很好的方法可以在不将客户端转换为每种类型的情况下区分报价?

对于更好的方法,有人有任何建议吗?

由于

2 个答案:

答案 0 :(得分:2)

如果您使用DataContracts,则可以使用KnownTypeAttribute修饰它们。

答案 1 :(得分:2)

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

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