2017-01-19 4 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; } 
} 

をしかし、クライアントがデータをrecievesとき、それはタイプBaseClassとしてすべてです:これまでのところ私が持っています。

+0

あなたはのDataContractシリアライズを使用していますかXmlSerialization?型定義を表示します。派生型は、契約が正しく定義され、シリアライザがそれを認識している限り、処理できます。 – loopedcode

+0

@loopedcode更新された質問、申し訳ありませんが、私は例外を解決するために管理しましたが、データがありません。 –

+0

基本クラスに属性を追加しようとしてください: '[KnownType(typeof(DerivedClass))]' –

答えて

1

あなたはBaseClassKnownType属性を追加し、DerivedClassためNameを変更したり、それを削除する必要があります。

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

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

KnownTypes

+0

私は(Name = "DerivedType")を削除しましたが、すべて正常に動作しました。ご協力いただきありがとうございます! –

1

あなたの問題を修正する必要があり、次のとおりです。

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

public class DerivedClass : BaseClass 
{ 
} 
関連する問題