似乎我应该知道这一点,我以为我做到了。我有基本视图模型类,在其中我有几个属性,但它们都使用自动getter和setter所以当然这些都工作正常,但我有一个必须广播事件(我使用棱镜)所以它看起来像这样。
protected bool isValid;
public bool IsValid
{
get { return isValid; }
set
{
isValid = true;
this.EventAggregator.GetEvent<ViewModelValidEvent>().Publish(isValid);
}
}
我得到的问题是当我尝试将IsValid分配给派生自它的类时 - 编译器错误说它是只读的...我认为保护是我需要做的就是修复它没有。
此外 - 当我需要setter调用RaisePropertyChanged或者其他什么时,我不得不为所有内容声明这些私有变量...有更好的方法吗?
有人能指出我正确的方向吗?感谢!!!
答案 0 :(得分:3)
我怀疑你试图在一个未知(由编译器)知道的对象上使用isValid
作为派生类的实例或派生类的子类。 protected
具有相对微妙的语义。
就个人而言,我鼓励你保持你的字段私有,并使用任何其他类的属性 - 甚至是派生类。
至于一种更简单的实现属性的方法 - 我认为没有一个真的,没有。你可以有一个包装器类型,但你仍然需要创建一个变量来保存包装器类型的实例,以及get / set访问器来代理变量。