4
我有一个WCF服务,并且必须将接口公开为datacontract。接口有两个派生类。 WCF服务将返回派生类型的对象。客户端必须将其转换为派生类。这在客户端是否可行?我的方法应该是什么?WCF接口和派生类
我有一个WCF服务,并且必须将接口公开为datacontract。接口有两个派生类。 WCF服务将返回派生类型的对象。客户端必须将其转换为派生类。这在客户端是否可行?我的方法应该是什么?WCF接口和派生类
如果你已经派生类,你需要“通告”这些数据合同:
[DataContract]
[KnownType(typeof(DerivedType1))]
[KnownType(typeof(DerivedType2))]
public class BaseType
{
......
}
,或者您也可以指定这些类型的关系对一个服务合同:
[ServiceKnownType(typeof(DerivedType1))]
[ServiceKnownType(typeof(DerivedType2))]
[ServiceContract()]
public interface IService
{
[OperationContract]
BaseType GetItems();
}
查看Data Contract Known Types或Service Known Types上的MSDN文档以获取更多背景信息。
在你的例子中BaseType是一个类,我正在问关于接口。接口可以吗?我知道knowntype与类一起工作,但它可以与接口一起工作吗? – Prashant 2010-06-07 19:50:35
@Prashant:不,WCF需要具体类 - 只有那些可以在客户端和服务器之间传输数据所需的XML模式中表达 – 2010-06-07 20:58:05