2012-03-20 21 views
5

私たちのサービスにデータのコレクションを送信しようとしているときにエラーが発生しました。しかし、コレクションにアイテムを1つだけ追加すると、罰金がかかります。 1つ以上のアイテムを追加すると、次のエラーが発生します。WCFシリアル化例外 - NetDataContractSerializer

タイプ「SmartTrade.Shared.Common.PaymentTerm」を取得専用コレクションとして使用することは、NetDataContractSerializerではサポートされていません。 CollectionDataContractAttribute属性またはSerializableAttribute属性を使用して型をマークするか、またはプロパティにセッターを追加することを検討してください。

ここで重要なことは、コレクション(IList <>)を1つのアイテムで送信できることです。私は、MaxReceivedMessageSizeとMaxArrayLengthをもっと合理的だと思うように増やしました。

誰でも助けてもらえますか

答えて

3

最後に私はそれを取り上げました。基本クラスの1つにgetterプロパティしかなく、setterプロパティを持たないプロパティがありました。だから私はセッタープロパティを追加する必要がありました

+2

? –

3

無意味なセッターを追加する代わりに、シリアル化によって無視されるプロパティをマークすることがあります。

これはSystem.Runtime.Serialization.IgnoreDataMemberAttribute

例であなたの財産を飾ることによって行うことができます:あなたはこれが必要な理由setterプロパティを説明してもらえ

public class Whatever 
{ 
    [IgnoreDataMember] // this won't be serialized now 
    public List<string> Things 
    { 
     get { return _things; } 
    } 
} 
関連する問題