1

私はこれを知っている必要があるようで、私は知っていると思いました。私はベースビューモデルクラスを持っています。その中にいくつかのプロパティがありますが、それらはすべて自動ゲッターとセッターを利用しているので、もちろんそれらはすべて正常に動作しますが、イベントをブロードキャストする必要があるものがあります (私はプリズムを使用しています)。このような。

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

私が得る問題は、それから派生したクラスに IsValid を割り当てようとしたときです-コンパイラエラーは、それが読み取り専用であると言っています...修正するために必要なのは保護されていると思いました。

さらに、セッターが RaisePropertyChanged などを呼び出す必要がある場合、これらのプライベート変数をすべて宣言する必要があります...これを行うより良い方法はありますか?

誰かが私を正しい方向に向けることができますか? ありがとう!!!

4

1 に答える 1

3

isValid派生クラスのインスタンスまたは派生クラスのサブクラスであることが (コンパイラによって) 認識されていないオブジェクトで使用しようとしていると思われます。protectedそのような比較的微妙なセマンティクスがあります。

個人的には、フィールドをプライベートに保ち、他のクラス (派生クラスであっても) のプロパティを使用することをお勧めします。

プロパティを実装するより簡単な方法については、実際にはないと思います。ラッパー型を使用することもできますが、ラッパー型のインスタンスを保持する変数と、変数にプロキシする get/set アクセサーを作成する必要があります。

于 2010-12-10T17:26:58.180 に答える