c # domanda su oggetti di classe di base
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 !!!
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 ??p>
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.