我有一个继承自DynamicObject
的班级。它包含List<MyProperty>
中存储的所有属性:
public class MyObject : DynamicObject
{
public List<MyProperty> Properties { get; set; }
}
public class MyProperty
{
public string Name { get; set; }
public string Value { get; set; }
}
我想使用Newtonsoft Json将其序列化为JSON。但转换后我得到一个空对象:{}
。当我从DynamicObject中删除继承时,我将所有属性序列化为JSON数组。而这正是我所需要的。如何在不删除继承的情况下序列化我的类?
答案 0 :(得分:1)
我通过覆盖GetDynamicMemberNames
方法解决了我的问题:
public override IEnumerable<string> GetDynamicMemberNames()
{
yield return nameof(this.Properties);
}
现在它按照我的需要进行序列化。
答案 1 :(得分:0)
根据您的需要,这些解决方案中的一个或两个都可以解决您的问题:
public class MyObject : DynamicObject
{
[JsonProperty("MyList")]
public List<MyProperty> MyList { get; set; }
}
或
[DataContract]
public class MyObject : DynamicObject
{
[DataMember]
public List<MyProperty> MyList { get; set; }
}
来自this post。