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;
      }
   }
}

第二个版本更冗长,我看不出公共实例变量在这里可能成为问题的任何原因。可能有什么原因吗?

ASP.NET Web 服务 DTO 属性与公共变量

属性

优先于支持字段

    绑定
  • ;字段不能绑定
  • 多态性;你不能做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 属性的实现的行为,因此您也可以使用不太详细的方法。任何实现更改都不需要客户端重新编译,因为它们在这两种情况下都将通过服务以相同的方式序列化,因此较小的实现很好。

仅供参考 - 如果客户端要使用这些类进行数据绑定,那么它们必须是类中的属性。 字段不会被绑定。

除了所有其他答案之外,属性还允许在读取或写入属性时运行验证。 使用字段时,这将需要更多的工作要做。