C# ASP.NET Web服务DTO属性与公共变量
我有一个web服务,它将返回一个列表,其中Person是DTO。有什么理由我不应该给人下这样的定义:C# ASP.NET Web服务DTO属性与公共变量,c#,asp.net,web-services,C#,Asp.net,Web Services,我有一个web服务,它将返回一个列表,其中Person是DTO。有什么理由我不应该给人下这样的定义: public class Person { public string Name; public string Email; } 而不是 public class Person { private string _name; public string Name { get { return _name; } s
public class Person {
public string Name;
public string Email;
}
而不是
public class Person {
private string _name;
public string Name {
get {
return _name;
}
set {
_name = value;
}
}
}
第二个版本更详细,我看不出公共实例变量在这里出现问题的任何原因。有什么原因吗?一般来说-这是一个设计决策-请参阅: 但DTO实现略有不同。由于这只是一个DTO,并且没有特定于set/get属性的实现,因此您也可以使用不太详细的方法。任何实现更改都不需要客户端重新编译,因为在任何情况下,它们都将通过服务以相同的方式序列化,所以您的较小实现是可以的
仅供参考-如果客户端要使用这些类进行数据绑定,那么它们必须是类中的属性。字段不会被绑定。属性优先于要支持的字段
- 绑定;无法绑定字段
- 多态性;不能使用
公共虚拟字符串名称代码>
public class Person {
public string Name { get; set; }
public string Email { get; set; }
}
除了所有其他答案外,属性还允许在读取或写入属性时运行验证。在使用字段时,这需要做更多的工作。但是没有定义哪种服务技术-一些代理类是作为字段而不是属性生成的。