c#关于基类属性的问题

时间:2010-12-10 17:21:21

标签: prism-4 c#-4.0

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

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

我得到的问题是当我尝试将IsValid分配给派生自它的类时 - 编译器错误说它是只读的...我认为保护是我需要做的就是修复它没有。

此外 - 当我需要setter调用RaisePropertyChanged或者其他什么时,我不得不为所有内容声明这些私有变量...有更好的方法吗?

有人能指出我正确的方向吗?感谢!!!

1 个答案:

答案 0 :(得分:3)

我怀疑你试图在一个未知(由编译器)知道的对象上使用isValid作为派生类的实例或派生类的子类。 protected具有相对微妙的语义。

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

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