Problema con erencia

23/03/2006 - 16:29 por José Miguel Torres | Informe spam
Hola, estoy contruyendo una aplicaclión, hice dos formas genéricas una
frmListado y la otra frmDetalle (en una dll), estas son las dos típicas
pantallas de mantenimiento. La palicación trabaja con una base de datos
oracle, por lo que hice una clase clOracle que encapsula la interface con la
base de datos. Pero me he encontrado con varios problemas.
1. En cada una de las dos pantallas anteriores de claro clOracle ora; Así
cuando en el form principal de la aplicación declaré public clOracle ora=new
clOracle("conexión"); al agregar formas de listado al proyecto las heredo de
frmListado. Al llamar las formas desde la pantalla principal lo hago así:

frmListarFamilias listar_familias=new frmListarFamilias();
listar_familias.ora=ora;
listar_familias.MdiParent=this;
listar_familias.Show();

el form carga correctamente la información, hasta aquí todo bien, para
llamar el form de detalle lo hago así: (el form de detalle heredó de
frmDetalle en la dll)

frmDetalleFamilias familias = new frmDetalleFamilias();
familias.ora = ora;
familias.modo=1;
familias.Show();

el form carga correctamente , pero al ejecutar alguna acción en la base de
datos me da este error en el código del padre (forma en la dll):

An unhandled exception of type 'System.NullReferenceException' occurred in
customforms.dll

Additional information: Referencia a objeto no establecida como instancia de
un objeto.

2. Traté de contruir un constructor que recibiera el objeto clOracle para
eliminar la variable pública y quitar la linea, pero los hijos no ven el
contructor sobrecargado del padre.

Muchas gracias.
 

Leer las respuestas

#1 Alberto Poblacion
26/03/2006 - 10:21 | Informe spam
"José Miguel Torres" wrote in
message news:
[...]
2. Traté de contruir un constructor que recibiera el objeto clOracle para
eliminar la variable pública y quitar la linea, pero los hijos no ven el
contructor sobrecargado del padre.



Los hijos, no es que no lo "vean", sino que tienes que volver a crear
en ellos el constructor y desde él llamar al del padre con la instrucción
:base(...). Algo parecido a esto:

public class frmDetalle
{
protected clOracle ora;
public frmDetalle(clOracle ora)
{
this.ora=ora;
}
...
}

public class frmDetalleFamilias:frmDetalle
{
public frmDetalleFamilias(clOracle ora):base(ora){}
...
}

Preguntas similares