参见英文答案 >
Do write-only properties have practical applications?14个
我有一些C#代码,喜欢创建具有setter但没有getter的属性.对我而言,这似乎是一种反模式,但我错过了什么?
我有一些C#代码,喜欢创建具有setter但没有getter的属性.对我而言,这似乎是一种反模式,但我错过了什么?
public List<SiteVisitSummary> DataSource { set { // crazy logic here } }
解决方法
我不知道我是否称它为反模式.我认为重要的是要实现的是,示例中的属性本质上是一种伪装成属性的方法.出于这个原因,这是不直观的,我通常会避免它.对我来说,这看起来更自然:
public void SetDataSource(IEnumerable<SiteVisitSummary> dataSource) { // crazy logic here }
我见过的一个相当合理的情况是只设置属性是当有几个属性组合在一起时,将all设置为单个值是合理的事情(但显然,将all作为一个值没有意义) .例如:
class Polyhedron { public int Height { get; set; } public int Width { get; set; } public int Depth { get; set; } public int AllDimensions { set { Height = Width = Depth = value; } } }