• Viernes 8 de Noviembre de 2024, 04:01

Autor Tema:  Error con DirectCast y ArrayList  (Leído 1487 veces)

krnl64

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
Error con DirectCast y ArrayList
« en: Miércoles 16 de Diciembre de 2009, 18:06 »
0
Hola a todos.
Verán tengo un ArrayList en el que quiero meter varios tipos de objetos.
He heredado del control TextBox y le he añadido otra propiedad Tag llamada Tag2 para almacenar datos que necesite.

La declaracion del objeto que almacena el contenido de la propiedad es:
Código: vb.net
  1.  
  2. private _tag2 as Object
  3.  
  4.  

y la declaracion de la propiedad:

Código: vb.net
  1.  
  2.     <TypeConverter(GetType(StringConverter))> _
  3.     <Browsable(True), DescriptionAttribute("Propiedad Tag 2"), CategoryAttribute("EProperties")> _
  4.     Public Property Tag2() As Object
  5.         Get
  6.             Return (Me._tag2)
  7.         End Get
  8.         Set(ByVal value As Object)
  9.             Me._tag2 = value
  10.         End Set
  11.     End Property
  12.  
  13.  

Entonces, en la propiedad Tag2 almaceno el nombre del tipo al que quiero convertir el contenido Text de mi TextBox.

Queda asi:
Código: vb.net
  1.  
  2. micontrol.Text="12/12/1999"
  3. micontrol.Tag2="System.DateTime"
  4.  
  5.  

Entonces al añadir el item al ArrayList, esta sentencia me falla:
Código: vb.net
  1.  
  2. miarraylist.Add(DirectCast(micontrol.Text,Type.GetType(micontrol.Tag2.ToString()))
  3.  
  4.  

No es correcta la conversion ?
Cómo puedo solucionar esto ?

Gracias

krnl64

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
Re: Error con DirectCast y ArrayList
« Respuesta #1 en: Miércoles 16 de Diciembre de 2009, 19:13 »
0
Encontré el fallo.

La conversión no era válida porque:
Código: vb.net
  1.  
  2. DirectCast(micontrol.Text,Type.GetType(micontrol.Tag2.ToString()))
  3.  
  4.  
devuelve Type

y esto
Código: vb.net
  1.  
  2. Convert.ChangeType(micontrol.Text, Type.GetType(micontrol.Tag2.ToString()))
  3.  
  4.  
devuelve Object que es lo que me interesaba.

Ale, si alguien tiene / ha tenido el mismo problema ya sabe la solución.


Saludos