我有:
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公开的实现。
我该怎么做?
答案 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)
您是否尝试使用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;}
}