Domanda

Sembra che io dovrei sapere questo e ho pensato che ho fatto. Ho base di classe di visualizzazione del modello, in esso ho diverse proprietà, ma tutti fanno uso di getter automatiche e setter così, naturalmente, quelli tutti bene il lavoro, ma ho uno che ha di trasmettere un evento (sto usando prisma) in modo che appaia come questo.

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

Il problema che ottengo è quando provo ad assegnare IsValid in una classe che deriva da esso - l'errore del compilatore dice che è di sola lettura ... Ho pensato protetto era quello che devo fare per risolvere il problema non ha fatto.

Inoltre - Continuo a dover dichiarare queste variabili private di tutto quando ho bisogno il setter di chiamare RaisePropertyChanged o qualsiasi altra cosa ... C'è un modo migliore per fare questo?

Qualcuno può punto nella giusta direzione di me? Grazie !!!

È stato utile?

Soluzione

ho il sospetto che stai cercando di utilizzare isValid su un oggetto che non è noto (dal compilatore) di essere un'istanza della classe derivata o di una sottoclasse della classe derivata. protected ha una semantica relativamente sottili del genere.

Personalmente vorrei incoraggiarvi a mantenere i campi però privato e utilizzare oggetti di qualsiasi altra classe -. Anche una classe derivata

Per quanto riguarda un modo più semplice di attuare le proprietà - Non credo che ci sia uno proprio, no. Si potrebbe avere un tipo di involucro, ma si sarebbe ancora bisogno di creare una variabile per contenere l'istanza del tipo involucro, e le funzioni di accesso get / set per delega alla variabile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top