ASP.NET Web 服务 DTO 属性与公共变量
本文关键字:变量 属性 DTO NET Web 服务 ASP | 更新日期: 2023-09-27 17:56:29
>我有一个网络服务,它将返回一个列表,其中 Person 是 DTO。有什么理由我不应该像这样定义人:
public class Person {
public string Name;
public string Email;
}
而不是
public class Person {
private string _name;
public string Name {
get {
return _name;
}
set {
_name = value;
}
}
}
第二个版本更冗长,我看不出公共实例变量在这里可能成为问题的任何原因。可能有什么原因吗?
属性
优先于支持字段
- 绑定
- ;字段不能绑定
- 多态性;你不能做
public virtual string Name;
可以使用自动属性来减少详细程度
public class Person {
public string Name { get; set; }
public string Email { get; set; }
}
一般来说 -
这是一个设计决策 - 请参阅:http://forums.asp.net/t/1233827.aspx但是DTO的实现略有不同。由于这只是一个 DTO,并且没有特定于 set/get 属性的实现的行为,因此您也可以使用不太详细的方法。任何实现更改都不需要客户端重新编译,因为它们在这两种情况下都将通过服务以相同的方式序列化,因此较小的实现很好。
仅供参考 - 如果客户端要使用这些类进行数据绑定,那么它们必须是类中的属性。 字段不会被绑定。
除了所有其他答案之外,属性还允许在读取或写入属性时运行验证。 使用字段时,这将需要更多的工作要做。