sap*_*ito 11 .net c# data-binding serialization public-fields
我知道在字段上使用属性的优点,例如在将来需要时能够提供额外的逻辑.
但我真的很想知道为什么不可能使用公共字段进行数据绑定,甚至不能使用JavaScriptSerializer类等JSON序列化程序.
在这些情况下,是否有任何理由忽视公共领域?或者它只是某种惯例?或者只是强迫用户使用属性?
简短的版本是始终使用属性而不是public(或者,实际上,甚至protected)字段从一开始就是.NET中的基本设计选择.
稍长的版本是添加对public字段的支持会增加数据绑定框架的复杂性(无论你指的是哪一个).Fields还缺少对变更通知的任何支持,这是数据绑定的一个相当重要的方面(至少在像Winforms开发这样的有状态环境中).即使在检索和设置值的级别,字段和属性也是不同的; 虽然用于检索或设置属性值的VB.NET或C#中的语法(按设计)与字段的语法相同,但在程序方案(如数据绑定)中用于执行此操作的机制对于属性与领域.
最后,这一切只意味着将公共字段的支持添加到任何数据绑定场景需要更多的工作,因此无论如何这都是一个反模式,这项工作没有完成.