限制在 Azure 表 JSON 响应中返回的对象属性

Limit object properties returned on Azure Tables JSON response

假设我有一个对象,当我在我的应用程序中时,我想获取它的所有属性,但我想限制从我的网络 API 发送回用户的一些属性。我的class如下:

public class NodeModel : TableEntity
{
    public NodeModel(string PK, string RK)
    {
        this.PartitionKey = PK;
        this.RowKey = RK;
    }

    public NodeModel() {}

    public string Value1 { get; set; }
    public string Value2 { get; set; }

}

所以当我在我的应用程序中使用 NodeModel 时,我想访问:

object.PartitionKey
object.RowKey
object.Value1
object.Value2

当我从 Azure Tables return 查询时,我最终会发送所有属性,包括 TimestampETag 值。我不确定这是否是一个大问题,但我想知道如何限制发回的内容。例如:

object.PartitionKey
object.RowKey
object.Value2

我有一种方法可以将入站 JSON 有效负载直接反序列化到我的 NodeModel,然后简单地 return 它:

string data = await req.Content.ReadAsStringAsync();
NodeModel nodeData = Newtonsoft.Json.JsonConvert.DeserializeObject<NodeModel>(data);
return req.CreateResponse(HttpStatusCode.OK, nodeData)

除了创建类型为 NodeModel 的新对象,然后为每个对象手动设置属性外,是否有更好的方法给出 getter/setter 或 public/private 关键字?

您可以 return 一个只有所需属性的匿名类型

string data = await req.Content.ReadAsStringAsync();
NodeModel nodeData = Newtonsoft.Json.JsonConvert.DeserializeObject<NodeModel>(data);
var responseData = new {
    nodeData.PartitionKey,
    nodeData.RowKey,
    nodeData.Value2
};
return req.CreateResponse(HttpStatusCode.OK, responseData);

或者创建一个专用的 class 作为 DTO

NodeModel 应该保留在应用程序内部,并且只通过网络公开需要的内容。