6

DynamicObject から継承するクラスのインスタンスをシリアル化しようとしています。動的プロパティをシリアル化するのに問題はありませんでしたが (簡潔にするためにここでは示していません)、「通常の」プロパティはうまくいかないようです。シリアル化クラスに関係なく、同じ問題が発生します。JavaScriptSerializer、JsonConvert、および XmlSerializer についても同じです。

public class MyDynamicClass : DynamicObject
{
    public string MyNormalProperty { get; set; }
}

...

MyDynamicClass instance = new MyDynamicClass()
{
    MyNormalProperty = "Hello, world!"
};

string json = JsonConvert.SerializeObject(instance);
// the resulting string is "{}", but I expected to see MyNormalProperty in there

シリアル化された文字列に MyNormalProperty が表示されるべきではありませんか? トリックはありますか、または DynamicObject からの継承に関する基本的なことを誤解していますか?

4

2 に答える 2

3

JsonProperty属性を使用するだけ

public class MyDynamicClass : DynamicObject
{
    [JsonProperty("MyNormalProperty")]
    public string MyNormalProperty { get; set; }
}

出力: {"MyNormalProperty":"Hello, world!"}

于 2013-09-16T07:08:17.367 に答える