C sharp - Obtener Clase de un objeto heredado!

 
Vista:
sin imagen de perfil

Obtener Clase de un objeto heredado!

Publicado por Ramiro (11 intervenciones) el 14/11/2015 23:14:21
Hola gente, estoy con un trabajito para la facu y se me presento un problemin!
El tema es que tengo 2 clases que heredan de otra (“Hombre y Mujer” que son “Personas”), en una grilla voy agregando objetos “hombre o Mujer”, después los quiero modificar o eliminar de esa misma grilla y ahí es donde tengo el problema, recuperándolos para poder modificar/eliminar.

Aca una imagen de como es el diagrama!

Sin-titulo

Con el DataBoundItem yo tenia pensado sacarlo como “Persona” y después, obtener el tipo y transformarlo, pero me tira un error que paso a mostrar a continuación!

este es un ejemplo de como seria el Eliminar!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (dgvPacientes.CurrentRow == null)
            {
                MessageBox.Show("Debe seleccionar un Paciente a Modificar");
                return;
            }
            DialogResult respuesta = MessageBox.Show("¿Confirma que desea eleiminar el medico?", "Eliminar", MessageBoxButtons.YesNo);
            if (respuesta==System.Windows.Forms.DialogResult.Yes)
            {
 
 
 
 
                //ctrPaciente.EliminaPaciente(ctrPaciente.ObtenerElPaciente(Convert.ToInt32(dgvPacientes.CurrentRow.Cells[0].Value)));
              ctrPaciente.EliminaPaciente(ctrPaciente.QueSoy((Paciente)dgvPacientes.CurrentRow.DataBoundItem));
                ArmaGrilla();
            }
        }

Y aca paso como seria el .QueSoy()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public Paciente QueSoy(Paciente oPaciente)
        {
 
            if (oPaciente.GetType()==typeof(Hombre))
            {
                oPaciente = (Hombre)oPaciente;
            }
            else
            {
                if (oPaciente.GetType()==typeof(Mujer))
                {
                    oPaciente = (Mujer)oPaciente;
                }
            }
            return oPaciente;
 
        }



Y aca paso el error que me tira cuando saco un objeto de la grilla!




Ustedes que opinan?
Desde ya gracias!


ddd
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Obtener Clase de un objeto heredado!

Publicado por Miguel Zarate (8 intervenciones) el 19/11/2015 17:54:51
Una manera rapida para obtener si tu clase derivada hereda de un objeto base es:

typeof(Hombre).IsAssignableFrom(Paciente);

si tu paciente proviene de clase base Hombre tu respuesta es true.


Mi pregunta es como generas una clase derivada si tienes dos posibles clases base?

tu estructura de datos tiene un mal diseño tu paciente debe provenir de una tabla base Persona
y persona tener un campo para Genero.



saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Obtener Clase de un objeto heredado!

Publicado por Carlos (35 intervenciones) el 19/11/2015 20:38:12
objetohijo.GetType().BaseType;

Esto te dará el tipo de la clase base, o sea si hombre y mujer heredan de Paciente, usa este código en un objeto hombre y te dará el tipo “Paciente”
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Obtener Clase de un objeto heredado!

Publicado por Ramiro (11 intervenciones) el 19/11/2015 21:44:21
Muchas gracias por las respuestas, pero ya lo solucione, el tema era que la grilla de la que sacaba los objetos estaba cargada no con objetos , sino con variables tipo var con los campos de esos objetos jee!!!!..

saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar