如何为父类设置 JSON 属性



我有:

class TableEntity
{
    public string PartitionKey {get; set;}
    public string RowKey {get; set;}
}
class MyEntity : TableEntity
{
    [JsonProperty(PropertyName = "myAFieldName")]
    public string AField {get; set;}
}

表实体是外部库的一部分,我无法向其添加属性。

我想将 PartitionKey 和 RowKey 的 JsonProperty 设置为:"GroupID"和"ItemID",部分原因是为了隐藏通过 JSON 公开的实现。

我该怎么做?

一般来说,将实体转换为适当的视图模型更容易(我几乎从不将原始实体传递给 JSON/views)。如果此示例只是对象的一部分,并且实际上有一些属性可以将名称与 VM 定义匹配,则可以使用自动映射器更轻松地填充 VM。如果没有任何属性匹配,则实际上更容易为 VM 提供一个构造函数,该构造函数采用实体并将值分配给其属性。

public class MyEntityVM
{
    public MyEntityVM(MyEntity entity)
    {
        this.ItemId = entity.RowKey;
        //etc...
    }
    public string ItemId {get;set;}
    public string GroupId {get;set;}
    public string MyAFieldName {get;set;
}

您是否尝试使用MetadataTypeAttribute(https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.metadatatypeattribute(v=vs.110).aspx)?

class TableEntity
{
    public string PartitionKey {get; set;}
    public string RowKey {get; set;}
}
[MetadataType(typeof(MyEntityMeta))]
class MyEntity : TableEntity
{
    public string AField {get; set;}
}
public class MyEntityMeta
{
    [JsonProperty(PropertyName = "GroupID")]
    public string PartitionKey {get; set;}
    [JsonProperty(PropertyName = "myAFieldName")]
    public string AField {get; set;}
}

另请参阅:https://github.com/JamesNK/Newtonsoft.Json/issues/405

相关内容

  • 没有找到相关文章

最新更新