3

明示的な DataContract 属性を使用する基本クラスから派生した JSON.NET を使用して POCO クラスをシリアル化/逆シリアル化すると、派生クラスの POCO プロパティが無視されることに気付きました。

たとえば、この例では、「Address」はシリアライズ/デシリアライズされていません。

[DataContract]
public class MyBaseClass
{
    [DataMember(Name = "SomeName")]
    public string Name { get; set; }
}

public class MyDerivedClass : MyBaseClass
{
    public string Address { get; set; }
}

それは意図的なものですか?

FWIW、DataContractSerializer(少なくともXMLのもの)はここで「正しいこと」を行い、「アドレス」をシリアライズ/デシリアライズしているようです。

ありがとう!

ヘンリク

4

1 に答える 1

2

JSON.NET では、少なくとも v4.5.6 の時点でDataContractは、基本クラスの を検出し、オプトイン シリアライゼーションを想定していますAddress属性で装飾されていないためDataMember、シリアライズされません。

これは James Newton-King による設計によるものであり、変更の予定はありません。

于 2013-10-07T21:37:14.123 に答える