假设我有一个对象,当我在应用程序内部时,我想获取所有属性,但是我想限制从Web API发送回用户的某些属性。我的课程如下:
my_list: List[Weakref[MyObject]] = [weakref.ref(o1), weakref.ref(o2)]
因此,当我在应用程序中使用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
当我从Azure表返回查询时,我最终将发送所有属性,包括object.PartitionKey
object.RowKey
object.Value1
object.Value2
和Timestamp
值。我不确定这是否很重要,但我想知道如何限制发送回的邮件。例如:
ETag
我有一种方法,可以将入站JSON有效负载直接反序列化到我的object.PartitionKey
object.RowKey
object.Value2
中,然后简单地将其返回:
NodeModel
除了创建类型为string data = await req.Content.ReadAsStringAsync();
NodeModel nodeData = Newtonsoft.Json.JsonConvert.DeserializeObject<NodeModel>(data);
return req.CreateResponse(HttpStatusCode.OK, nodeData)
的新对象,然后为每个对象手动设置属性外,给定getter / setter或public / private关键字还有更好的方法吗?
答案 0 :(得分:1)
您可以返回仅具有所需属性的匿名类型
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);
或创建一个专门的类以充当DTO
NodeModel
应该保留在应用程序内部,并且仅通过网络公开所需的内容。