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