1

その質問をするのは私が初めてではないと確信していますが、SOとGoogleで答えが見つかりませんでした...

次のカスタム コレクションがあります。

[Serializable]
public class BaseCollection<T>: ICollection<T>
{
}

[CollectionDataContract]
[Serializable]
ProductsCollection : BaseCollection<Product>
{
    [DataMember]
    public int CategoryId {get;set;}
}

ここで、WCF を使用してインスタンスを転送しますProductsCollection...問題は、WCF がカスタム プロパティの CategoryId を正しく転送しないことです。常に 0 (デフォルトは int) です。

http://msdn.microsoft.com/en-us/library/aa347850.aspxで、彼らはそれを解決する必要があると言いCollectionDataContract、コレクションは ArrayOfProduct ではなく、特定のコレクションにシリアル化されます。

私は何かが足りないのですか?

DataContract シリアライザーで不可能な場合、必要に応じてコレクションをシリアライズ/デシリアライズする特定のクラス用の MyCustomContract シリアライザーを作成することは可能ですか?

ありがとう

4

1 に答える 1

2

DataContractSerializerこれはWCFのデフォルトです)はコレクションアイテムのみをシリアル化し、追加のプロパティはシリアル化しません。

回避策については、この回答を参照してください。

于 2012-12-11T13:39:12.380 に答える