如何为父类

时间:2016-01-29 22:01:48

标签: c# json asp.net-web-api json.net

我有:

class TableEntity
{
    public string PartitionKey {get; set;}
    public string RowKey {get; set;}
}

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

TableEntity是外部库的一部分,我无法为其添加属性。

我想设置PartitionKey&的JsonProperty。 RowKey:" GroupID" &安培; " ItemID",部分是为了隐藏通过JSON公开的实现。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

一般来说,将实体转换为正确的视图模型更容易(我几乎从不将原始实体传递给JSON / views)。如果此示例只是对象的一部分,并且实际上有一些属性可以将名称与VM定义匹配,那么您可以使用AutoMapper来更轻松地填充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;
}

答案 1 :(得分:1)

您是否尝试使用MetadataTypeAttributehttps://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