void cambiarInstancia(PropertyInfo ptyInfo) { if ((this.pilaObjetos == null) && (this.pilaPropiedades == null)) { this.pilaObjetos = new Stack(); this.pilaPropiedades = new Stack(); } this.pilaObjetos.Push(this.instancia); this.pilaPropiedades.Push(this.propiedades); this.instancia = this.instancia.GetType().GetProperty(ptyInfo.Name).GetValue(this.instancia, null); this.propiedades = this.propiedades[ptyInfo.Name].Propiedades; }
void recuperarInstanciaOrigen() { if ((this.pilaObjetos != null) && (this.pilaPropiedades != null)) { while ((this.pilaObjetos.Count > 0) && (this.pilaPropiedades.Count > 0)) { this.instancia = this.pilaObjetos.Pop(); this.propiedades = (IListaPropiedades)this.pilaPropiedades.Pop(); } this.pilaObjetos = null; this.pilaPropiedades = null; } }
IListaPropiedades propiedades; // implementacion de patron Composite internal AdaptadorPropiedad(PropertyInfo propInfo, object instanc) { this.info = propInfo; this.instancia = instanc; if ((tieneAtributos()) && (esParteModelo())) { if (esModelo()) { this.propiedades = new ListaPropiedades(); // es un Modelo agregado } else { this.propiedades = null; // es un valor atomico } } }
public AdaptadorReflexion(object objeto) { this.instancia = objeto; this.propiedades = new ListaPropiedades(); obtenerPropiedades(this.instancia); }