2017-01-19 38 views
1

我有一個服務方法,它返回一個List<BaseClass>,但有時我可能會在列表中發送一個DerivedClass : BaseClass如何通過API(WCF)發送派生類型的列表.NET

問題是我想通過發送信息。到目前爲止,我有:

[DataContract] 
public class BaseClass { 
    string Data { get; set; } 
} 

[DataContract(Name="BaseClass")] 
public class DerivedClass : BaseClass { 
    string MoreData { get; set; } 
} 

但是,當客戶端臨危數據,這一切都爲一種類型BaseClass

+0

您是否使用DataContract序列或XmlSerialization?顯示你的類型定義。只要您的合同被正確定義並且序列化程序知道它,派生類型就可以被處理。 – loopedcode

+0

@loopedcode更新的問題,對不起,我設法解決這個異常,但缺少數據。 –

+0

嘗試添加屬性到基類:'[KnownType(typeof(DerivedClass))]' –

回答

1

您應該添加KnownType屬性BaseClass和更改NameDerivedClass或刪除它:

[DataContract] 
[KnownType(typeof(DerivedClass))] 
public class BaseClass 
{ 
    string Data { get; set; } 
} 

[DataContract(Name="DerivedType")] 
public class DerivedClass : BaseClass 
{ 
    string MoreData { get; set; } 
} 

KnownTypes

+0

我剛剛刪除了(名稱=「DerivedType」)一切正常。謝謝你的幫助! –

1

以下應該解決您的問題:

[DataContract] 
[KnownType(typeof(DerivedClass))] 
public class BaseClass { 
    string Data { get; set; } 
} 

public class DerivedClass : BaseClass 
{ 
}