Descubrimos un problema con los metodos _Access y _Assign en herencia. En una clase hay una propiedad y esta tiene definido el metodo _assign. Otra clase hereda de esta y define para esa propiedad el metodo _access. Pongo como ejemplo una clase Persona y otra Empleado que hereda de Person. Se crea un objeto de cada clase. Si se crea primer la clase base (persona) y despues la subclase (empleado) se puede acceder a la propiedad de la primera (ejemplo Persona.Apellido). Si se crea primero la subcase (empleado) y despues la base (persona) y se quiere acceder a la propiedad que tiene el metodo _access en la subclase da error porque no encuenta el metodo _access (al intentar Persona.Apellido da error porque no encuentra apellido_access). Por lo que estuve investigando el tema es que cuando crea un objeto levanta la estructura jerarquica de la clase (a la que se puede acceder con la funcion amembers() consultando por el objeto o cada clase en la jerarquia) y hace referencia a cada propiedad si tiene algunos de los metodos (_access o _assign). No encontre documentación que lo mencione, solo paso y lo confirme con un pequeño ejemplo como el que describi (una clase persona con propiedades apellido y nombre y una funcion apellido_assign y otra clase empleado que hereda de persona con una propiedad mas cuil y el metodo apellido_access). En la documentacion de microsoft menciona explicitamente que se puede usar indistintamente _access o _assign, pero nada habla de la herencia ¿alguien sabe algo de esto? Por lo que vimos si se usa _access o _assign hay que crearlas en la misma definicion donde esta la propiedad a menos que sea una clase abstracta y no se cree ninguna instancia de la misma. No se si interesa pero para nosotros es importante como norma de desarrollo.
Muchas gracias.

Responder a