什么是通知 class A 属性 对 class A 列表中 class B 对象的更改的好方法

What is a good way to notify class A of a property change on objects of class B in a list in class A

我有 类 A 和 B 如下:

public class A
{
  private List<B> myList;

  public List<B> MyList
  {
      get { return myList; }
      set { myList = value; }
  }

  private bool allComplete;

  public bool AllComplete
  {
    get { return allComplete; }
    set { allComplete = value; }
  }

  public void CalculateAllComplete()
  {
    foreach (B item in MyList)
    {
      if (!item.IsComplete)
      {
        AllComplete = false;
        return;
      }
    }
    AllComplete = true;
  }
}

public class B
{
  private bool isComplete;

  public bool IsComplete
  {
    get { return isComplete; }
    set { isComplete = value; }
  }
}

每当 属性 IsCompleteMyList 中的任何 B 类型对象上发生变化时,我都需要得到通知。发生这种情况时,我将调用 CalculateAllComplete 方法来判断列表中的所有项目是否完整。

执行此操作的好方法是什么?

我将在 class B 上实现 INotifyPropertyChanged 接口,并让 class A 实例订阅任何 属性 更改。

在您的 class B 中实现接口 IObservable 并在 class A 中订阅 B 的一个实例 看看 https://msdn.microsoft.com/library/dd990377.aspx