2016-07-10 7 views
0

DynamicObjectから継承したクラスがあります。私はNewtonsoft JSONを使用してJSONにそれをシリアライズしたいDynamicObjectをJSONに変換すると空の結果が返される

public class MyObject : DynamicObject 
{ 
    public List<MyProperty> Properties { get; set; } 
} 
public class MyProperty 
{ 
    public string Name { get; set; } 
    public string Value { get; set; } 
} 

:それはList<MyProperty>に保存されているすべてのプロパティが含まれています。しかし、それを変換した後、私は空のオブジェクトを得る:{}。 DynamicObjectから継承を削除すると、すべてのプロパティがJSON配列としてシリアル化されます。そしてそれは私が必要とするものです。どのように私はその継承を削除せずにクラスをシリアル化できますか?

答えて

0

私はGetDynamicMemberNamesメソッドをオーバーライドすることで、私の問題を解決しました:

public override IEnumerable<string> GetDynamicMemberNames() 
{ 
    yield return nameof(this.Properties); 
} 

は、今では私が必要と同じようにシリアライズします。

0
したい内容に応じて

、いずれか、またはこれらのソリューションの両方があなたの問題を解決する必要があります

public class MyObject : DynamicObject 
{ 
    [JsonProperty("MyList")] 
    public List<MyProperty> MyList { get; set; } 
} 

またはthis postから

[DataContract] 
public class MyObject : DynamicObject 
{ 
    [DataMember] 
    public List<MyProperty> MyList { get; set; } 
} 

関連する問題