似乎我应该知道这一点,我以为我做到了。我有基本视图模型类,在其中我有几个属性,但它们都使用自动捕获器和固定器,所以当然它们都可以正常工作,但是我有一个必须广播活动(我正在使用Prism),所以它看起来看起来像像这样。

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

我得到的问题是,当我尝试在从中得出的类中分配ISVALID时 - 编译器错误说它只是读取的...我认为受保护是我需要做的修复所需要的。

此外 - 当我需要设置器打电话给raisepropertychanged或其他任何东西时,我不得不为所有事物声明这些私人变量...是否有更好的方法可以做到这一点?

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

有帮助吗?

解决方案

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

我个人会鼓励您保持领域的私密性,并使用其他任何类别的属性,甚至是派生的类。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top