1

看来我应该知道这一点,我以为我知道了。我有基本视图模型类,其中我有几个属性,但它们都使用自动 getter 和 setter,所以当然这些都可以正常工作,但我有一个必须广播事件(我正在使用 prism)所以它看起来像这样。

protected bool isValid;
public bool IsValid
{
  get { return isValid; }
  set
  {
    isValid = true;
    this.EventAggregator.GetEvent<ViewModelValidEvent>().Publish(isValid);
  }
}

我遇到的问题是,当我尝试在派生自它的类中分配 IsValid 时 - 编译器错误说它是只读的......我认为 protected 是我需要做的修复它没有。

此外 - 当我需要设置器调用 RaisePropertyChanged 或其他任何东西时,我一直不得不为所有内容声明这些私有变量......有没有更好的方法来做到这一点?

谁能指出我正确的方向?谢谢!!!

4

1 回答 1

3

我怀疑您正在尝试isValid在(编译器)不知道是派生类的实例或派生类的子类的对象上使用。protected具有相对微妙的语义。

我个人会鼓励你保持你的字段私有,并使用任何其他类的属性——甚至是派生类。

至于一种更简单的实现属性的方法——我认为真的没有,没有。您可以有一个包装器类型,但您仍然需要创建一个变量来保存包装器类型的实例,以及代理该变量的 get/set 访问器。

于 2010-12-10T17:26:58.180 回答