将 DynamicObject 转换为 JSON 时结果为空

Empty result when converting DynamicObject to JSON

我有一个 class 继承自 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 数组。而这正是我所需要的。如何在不删除继承的情况下序列化我的 class?

根据您的需要,这些解决方案中的一个或两个应该可以解决您的问题:

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.

我已经通过覆盖 GetDynamicMemberNames 方法解决了我的问题:

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

现在它可以按我的需要进行序列化。