2010-05-27 21 views
48

Quiero convertir una cadena a un tipo genéricoCómo convertir cadena a cualquier tipo

tengo esto:

string inputValue = myTxtBox.Text;  

PropertyInfo propInfo = typeof(MyClass).GetProperty(myPropertyName); 
Type propType = propInfo.PropertyType; 

object propValue = ????? 

Quiero convertir 'inputString' con el tipo de esa propiedad, a compruebe si es compatible ¿cómo puedo hacer eso?

TKS

Respuesta

78
using System.ComponentModel; 

TypeConverter typeConverter = TypeDescriptor.GetConverter(propType); 
object propValue = typeConverter.ConvertFromString(inputValue); 
+1

Me sorprende que este obtenga los votos por adelantado en comparación con 'Convert.ChangeType'. –

+6

Probablemente porque 'ChangeType' intenta convertir, no convertir. Por ejemplo, ChangeType no puede pasar de 'String' a' Nullable '-' TypeConverter' puede. – efdee

11

Trate Convert.ChangeType

object propvalue = Convert.ChangeType(inputValue, propType); 
+2

Esto es realmente un comentario, no una respuesta a la pregunta. Utilice "agregar comentario" para dejar comentarios al autor. –

+0

@SteveGuidi: Predeterminado ya editó la respuesta mientras tanto, tnx para ambos. – SWeko

+1

@SWeko es la respuesta predeterminada al editar a través de la página de revisión (y esta pregunta estaba allí para nosotros dos). Acabo de editarlo en su lugar. – Default

3

Yo realmente no creo que entiendo lo que su están tratando de archieve, pero .. que decir un casting dinámico? Algo como esto:

TypeDescriptor.GetConverter(typeof(String)).ConvertTo(myObject, typeof(Program)); 

Cheers.

Cuestiones relacionadas