Comprobación del tipo de un objeto y moldeado (casting)
En algunas circunstancias, puede ser útil codificar un procedimiento que reciba como parámetro un
objeto genérico, y dependiendo del tipo del objeto, ejecutar ciertos métodos.
Si tipificamos un parámetro como un objeto genérico, es decir, de tipo Object, necesitamos
implementar dentro del procedimiento un mecanismo que, en primer lugar, compruebe a qué tipo
pertenece el objeto, y por otra parte, acceda adecuadamente a su lista de miembros.
Como ejemplo consideremos el siguiente caso: creamos una clase Empleado y otra Factura, las cuales
vemos en el Código fuente 281.
Public Class Empleado
Public piID As String
Public psNombre As String
Public Overridable Sub VerDatos()
Console.WriteLine("Código de empleado: {0}, nombre: {1}", _
Me.piID, Me.psNombre)
End Sub
End Class
Public Class Factura
Public pdtFecha As Date
Public piImporte As Integer
Public Sub Emitir()
Console.WriteLine("Se procede a generar la siguiente factura:")
Console.WriteLine("Fecha de factura: {0}", Me.pdtFecha)
Console.WriteLine("Importe de la factura: {0}", Me.piImporte)
End Sub
End Class
Código fuente 281
A continuación, necesitamos un procedimiento al que podamos pasar indistintamente un objeto
Empleado o Factura. Dentro de dicho procedimiento, al que denominaremos ManipularVarios( ), y
que llamaremos desde Main( ), comprobaremos el tipo de objeto llamando al método
GetType( ), que
implementan todos los objetos del entorno, debido a que es un método de la clase Object, y como ya
sabemos, todas las clases heredan implícitamente de Object.
GetType( ) devuelve un objeto de la clase Type. Esta clase es de una enorme utilidad, ya que nos
proporciona toda la información relativa al tipo del objeto. Para nuestro problema particular,
interrogaremos a la propiedad Name del objeto, que nos devolverá una cadena con el nombre de la
clase a que pertenece el objeto.
No hay comentarios:
Publicar un comentario