【发布时间】:2015-09-01 09:12:51
【问题描述】:
我有两个属性,其中后一个 (CalulcatedValue) 必须在第一个 (FXRate) 更改时更新。
我可以通过设置CalulcatedValue ReadOnly 并从FXRate setter 调用OnPropertyChanged("CalculatedValue") 来实现这一点。
public double FXRate {
get { return _fXRate; }
set {
Set(_fXRate, value, "FXRate");
OnPropertyChanged("CaluclatedValue");
}
}
public float CalculatedValue
{
get { return FXRate * SomeOtherValue;}
}
但我知道CalulcatedValue 属性会被多次调用(用于多个LINQ 查询等)。我正在考虑 getter 应该非常快地返回值,并计划为其放置一个支持字段。
public double FXRate
{
get { return _fXRate;}
set {
Set(_fXRate, value, "FXRate");
CalculatedValue = 0; //how to set CalculatedValue since it's setter is calculating it with its logic, i.e. the value parameter is not needed ?
}
}
private double _fXRate;
public float CalculatedValue
{
get { return _calculatedValue; }
set {
__calculatedValue = FXRate * SomeOtherValue); //consider this line takes some effort to be calculated -> instead of SomeOtherValue there might be pretty complex logic here to get the result
OnPropertyChanged("CalculatedValue");
}
}
private float _calculatedValue;
CalulcatedValue 现在应该如何设置?它不需要传递任何值参数,因为逻辑在 setter 内部。线
计算值=0
现在是愚蠢的事情发生的地方。
【问题讨论】:
-
有一个不使用
value的setter 是典型的代码异味。只是没有。