Pregunta

Parece que debo saber esto y creo que lo hice. Tengo base de clase vista del modelo, en el que tengo varias propiedades, pero todos ellos hacen uso de captadores y definidores automáticas así que por supuesto los que todos funcionan bien, pero tengo uno que tiene que retransmitir un acontecimiento (estoy usando prisma) por lo que parece Me gusta esto.

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

El problema que tengo es cuando intento para asignar IsValid en una clase que se deriva de ella - el error del compilador dice que es de sólo lectura ... pensé protegida fue lo que tengo que hacer para solucionarlo no lo hizo.

Por otra parte - no dejo de tener que declarar estas variables privadas por todo lo que necesito cuando el colocador para llamar RaisePropertyChanged o lo que sea ... ¿Hay una mejor manera de hacer esto?

me puede punto cualquiera en la dirección correcta? Gracias !!!

¿Fue útil?

Solución

sospecho que está intentando utilizar isValid en un objeto que no se conoce (por el compilador) a ser una instancia de la clase derivada o una subclase de la clase derivada. protected tiene semántica relativamente sutiles así.

En lo personal les animo a mantener sus campos aunque privada, y propiedades de uso de cualquier otra clase -. Incluso una clase derivada

En cuanto a una forma más sencilla de implementar las propiedades - Creo que no hay una realidad, no. Usted podría tener un tipo de envoltura, pero aún había necesidad de crear una variable para contener la instancia del tipo de envoltura, y los descriptores de acceso get / configurado en Proxy a la variable.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top