逻辑中获得财产的一部分.好的做法?

Sor*_*oot 7 c# data-binding wpf properties

在将我的xaml数据绑定到某些数据时,我经常使用属性的"get"部分来做一些逻辑.比如给出列表总数或检查是否有积极的总和.

例如:

public List<SomeClass> ListOfSomeClass{get;set;}

public double SumOfSomeClass
{
  get
  {
    return ListOfSomeClass.Sum(s => s.Totals);
  }
}

public bool SumPositive
{
  get
  {
    if(SumOfSomeClass >= 0)
      return true;
    else
      return false;
  }
}
Run Code Online (Sandbox Code Playgroud)

这样我就可以绑定到SumPositive和SumOfSomeClass.这被认为是好习惯吗?即使它变得比这更复杂?或者更好地调用方法并返回结果?调用另一个类甚至数据库怎么样?

Ant*_*lev 14

物业获取者应该是快速且幂等的(即不应该在那里执行破坏性行为).尽管迭代内存中的对象集合是完全可以的,但我不建议在获取设置部件中进行任何类型的繁重操作.说到迭代,我仍然会缓存结果以节省几毫秒.