Frage

Es scheint, wie ich das erkennen sollte und ich dachte, ich tat. Ich habe Klasse Basisansicht Modell, in das ich mehrere Eigenschaften haben, aber sie alle nutzen die automatische Getter und Setter so alle gut funktionieren natürlich, aber ich habe eine, die ein Ereignis übertragen hat (ich bin mit Prisma), so sieht es aus so was.

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

Das Problem, das ich bekommen ist, wenn ich versuche IsValid in einer Klasse zugeordnet werden, die daraus abgeleitet - der Compiler-Fehler sagt, dass es nur gelesen ... dachte ich geschützt war, was ich brauche, es zu tun zu beheben nicht.

Außerdem - ich muss immer wieder diese privaten Variablen für alles zu erklären, wenn ich die Setter brauchen RaisePropertyChanged oder was auch immer zu nennen ... Gibt es einen besseren Weg, dies zu tun?

Kann mir jemand Punkt mich in die richtige Richtung? Dank !!!

War es hilfreich?

Lösung

Ich vermute, Sie zu verwenden isValid auf einem Objekt sind versucht, die nicht bekannt ist (durch den Compiler) eine Instanz der abgeleiteten Klasse oder eine Unterklasse der abgeleiteten Klasse zu sein. protected hat relativ subtile Semantik ähnlich.

Persönlich würde ich Sie ermutigen, Ihre Felder privat obwohl zu halten und Gebrauchseigenschaften von jeder anderen Klasse -. Auch eine abgeleitete Klasse

Wie für eine einfachere Art und Weise die Eigenschaften der Implementierung - ich glaube nicht, dass man wirklich ist, nein. Sie könnten einen Wrapper-Typ, aber Sie würden immer noch eine Variable halten die Instanz des Wrapper-Typ, und die get / set-Accessoren Proxy auf die Variable.

erstellen müssen
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top