Conversion de tipos

27/01/2006 - 11:09 por Catalin Lungu | Informe spam
Hola,
Como podría saber el tipo de una propiedad de una clase y como podría
convertir el contenido de un textbox a ese tipo?

private void btnsalir_Click(object sender, EventArgs e)
{
Type t = btnsalir.GetType();
PropertyInfo[] pr = t.GetProperties();
foreach (PropertyInfo m in pr)
{
if (m.Name.ToUpper() == txtbox1.Text.ToUpper())
{
Type tipom = m.GetType();
if (!tipom.IsSubclassOf(txtbox2.GetType()))
{
val = Convert.ToTipoDeLaPropiedad_m(txtbox2.Text);
m.SetValue(btnsalir, val, null);
}
}
}
}

txtbox1.Text = "left"
txtbox2.Text = "0"

Como deberia ser esta linea para que esto funcione:
val = Convert.To_Tipo_De_La_Propiedad_m(txtbox2.Text);

Saludos,
Catalin

Preguntas similare

Leer las respuestas

#1 José Escrich
27/01/2006 - 19:38 | Informe spam
Catalin,

utiliza .GetType(); eso te dara el type, respecto a la conversión puedes
utilizar .TryParse sobre lo que son los miembros primitivos.

saludos,


José Escrich
jescrich (a) gmail.com
http://latincoder.com

CL> Hola,
CL> Como podría saber el tipo de una propiedad de una clase y como
CL> podría
CL> convertir el contenido de un textbox a ese tipo?
CL> private void btnsalir_Click(object sender, EventArgs e)
CL> {
CL> Type t = btnsalir.GetType();
CL> PropertyInfo[] pr = t.GetProperties();
CL> foreach (PropertyInfo m in pr)
CL> {
CL> if (m.Name.ToUpper() == txtbox1.Text.ToUpper())
CL> {
CL> Type tipom = m.GetType();
CL> if (!tipom.IsSubclassOf(txtbox2.GetType()))
CL> {
CL> val = Convert.ToTipoDeLaPropiedad_m(txtbox2.Text);
CL> m.SetValue(btnsalir, val, null);
CL> }
CL> }
CL> }
CL> }
CL> txtbox1.Text = "left"
CL> txtbox2.Text = "0"
CL> Como deberia ser esta linea para que esto funcione: val CL> Convert.To_Tipo_De_La_Propiedad_m(txtbox2.Text);
CL>
CL> Saludos,
CL> Catali
Respuesta Responder a este mensaje
#2 Octavio Hernandez
28/01/2006 - 10:16 | Informe spam
Catalin,

Para obtener el tipo de la propiedad, en lugar de: Type tipom = m.GetType();
debes usar Type tipom = m.PropertyType;
Respoecto a la conversión, no veo otra manera que no sea discriminando entre
todos los tipos posibles :-(

Slds - Octavio

"Catalin Lungu" escribió en el mensaje
news:drcrgo$f0v$
Hola,
Como podría saber el tipo de una propiedad de una clase y como podría
convertir el contenido de un textbox a ese tipo?

private void btnsalir_Click(object sender, EventArgs e)
{
Type t = btnsalir.GetType();
PropertyInfo[] pr = t.GetProperties();
foreach (PropertyInfo m in pr)
{
if (m.Name.ToUpper() == txtbox1.Text.ToUpper())
{
Type tipom = m.GetType();
if (!tipom.IsSubclassOf(txtbox2.GetType()))
{
val = Convert.ToTipoDeLaPropiedad_m(txtbox2.Text);
m.SetValue(btnsalir, val, null);
}
}
}
}

txtbox1.Text = "left"
txtbox2.Text = "0"

Como deberia ser esta linea para que esto funcione:
val = Convert.To_Tipo_De_La_Propiedad_m(txtbox2.Text);

Saludos,
Catalin

Respuesta Responder a este mensaje
#3 Eduardo A. Morcillo [MS MVP VB]
28/01/2006 - 15:38 | Informe spam
Para la conversion puedes intentar obtener un TypeConverter:

static object Convertir(object valor, Type tipoDestino) {

// Obtengo el TypeConverter del tipo destino
TypeConverter tc = TypeDescriptor.GetConverter(tipoDestino);

// Tengo un TypeConverter para el tipo destino?
if (tc != null) {

// Puede convertir desde el tipo de "valor"?
if (tc.CanConvertFrom(valor.GetType()))

// Convierto el objeto
return tc.ConvertFrom(valor);

}

// Si no se obtuvo un TypeConverter para el tipo destino
// o no pudo convertir desde el tipo de origen
// intento con el TypeConverter del tipo de origen

// Obtengo el TypeConverter
tc = TypeDescriptor.GetConverter(valor.GetType());

if (tc != null) {

// Puede convertir al tipo destino?
if (tc.CanConvertTo(tipoDestino)) {

// Convierto el objeto
return tc.ConvertTo(valor, tipoDestino);

}

}

// No se puede coverti, devuelvo null
return null;

}


Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#4 Octavio Hernandez
29/01/2006 - 11:54 | Informe spam
Eduardo,

Genial esto, gracias !

Nos vemos - Octavio


"Eduardo A. Morcillo [MS MVP VB]" <emorcillo .AT. mvps.org> escribió en el
mensaje news:ufB%
Para la conversion puedes intentar obtener un TypeConverter:

static object Convertir(object valor, Type tipoDestino) {

// Obtengo el TypeConverter del tipo destino
TypeConverter tc = TypeDescriptor.GetConverter(tipoDestino);

// Tengo un TypeConverter para el tipo destino?
if (tc != null) {

// Puede convertir desde el tipo de "valor"?
if (tc.CanConvertFrom(valor.GetType()))

// Convierto el objeto
return tc.ConvertFrom(valor);

}

// Si no se obtuvo un TypeConverter para el tipo destino
// o no pudo convertir desde el tipo de origen
// intento con el TypeConverter del tipo de origen

// Obtengo el TypeConverter
tc = TypeDescriptor.GetConverter(valor.GetType());

if (tc != null) {

// Puede convertir al tipo destino?
if (tc.CanConvertTo(tipoDestino)) {

// Convierto el objeto
return tc.ConvertTo(valor, tipoDestino);

}

}

// No se puede coverti, devuelvo null
return null;

}


Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C

Respuesta Responder a este mensaje
#5 Catalin Lungu
30/01/2006 - 16:35 | Informe spam
Muchas gracias a todos, muy ingeniosa la solución de Eduardo. Tengo otra
pregunta respecto a tipos de datos pero voy a abrir un nuevo hilo.

Catalin.



"Eduardo A. Morcillo [MS MVP VB]" <emorcillo .AT. mvps.org> escribió en el
mensaje news:ufB%
Para la conversion puedes intentar obtener un TypeConverter:

static object Convertir(object valor, Type tipoDestino) {

// Obtengo el TypeConverter del tipo destino
TypeConverter tc = TypeDescriptor.GetConverter(tipoDestino);

// Tengo un TypeConverter para el tipo destino?
if (tc != null) {

// Puede convertir desde el tipo de "valor"?
if (tc.CanConvertFrom(valor.GetType()))

// Convierto el objeto
return tc.ConvertFrom(valor);

}

// Si no se obtuvo un TypeConverter para el tipo destino
// o no pudo convertir desde el tipo de origen
// intento con el TypeConverter del tipo de origen

// Obtengo el TypeConverter
tc = TypeDescriptor.GetConverter(valor.GetType());

if (tc != null) {

// Puede convertir al tipo destino?
if (tc.CanConvertTo(tipoDestino)) {

// Convierto el objeto
return tc.ConvertTo(valor, tipoDestino);

}

}

// No se puede coverti, devuelvo null
return null;

}


Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida