C# WCF-如何从基类型向客户机公开强类型对象(无客户机强制转换?)

C# WCF-如何从基类型向客户机公开强类型对象(无客户机强制转换?),c#,wcf,inheritance,casting,C#,Wcf,Inheritance,Casting,我有一个WCF服务,需要返回不同类型的报价 (即Quote1、Quote2、Quote3)--所有继承自Quote 我的计划是公开一种方法 Quote GetQuote(Message message); 然而,我强迫客户这样做 如果(引用为Quote1) 其他(引文是引文2)等 如果不对每种报价类型使用不同的方法,那么有没有一种好方法可以在不将客户机强制转换为每种类型的情况下区分报价 有人对更好的方法有什么建议吗 谢谢如果您使用的是DataContracts,那么您可以使用来装饰它们。为每个

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

我的计划是公开一种方法

Quote GetQuote(Message message);
然而,我强迫客户这样做

如果(引用为Quote1) 其他(引文是引文2)等

如果不对每种报价类型使用不同的方法,那么有没有一种好方法可以在不将客户机强制转换为每种类型的情况下区分报价

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


谢谢

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

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


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

已经在这样做了,比如[ServiceKnownType(typeof(Quote))][ServiceKnownType(typeof(Quote1))][ServiceKnownType(typeof(Quote2))][ServiceKnownType(typeof(Quote3))][ServiceKnownTypeType](类型(Quote4))]但是,客户机仍然必须向type@Chris-我通常先编写wsdl/模式,因此我不确定自动生成的模式的外观-但如果我没有记错,DataContractSerializer会传递一个指示器,指示序列化了哪种类型,消费者可以检查该指示器,以了解反序列化为哪种类型。这类似于stra将关系结构映射到OO继承方案时,ORM工具中使用的类型。这些引用对象是在客户端和服务器之间共享的库中,还是从服务描述生成的?例如,它们是否有行为,或者只是DTO?