2010-05-27 5 views
48

Je veux convertir une chaîne à un type génériqueComment convertir la chaîne à tout type

J'ai ceci:

string inputValue = myTxtBox.Text;  

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

object propValue = ????? 

Je veux convertir « inputString » au type de cette propriété, à vérifier si c'est compatible comment puis-je faire cela?

TKS

Répondre

78
using System.ComponentModel; 

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

Je suis surpris que celui-ci reçoive les upvotes par rapport à 'Convert.ChangeType'. –

+6

Probablement parce que 'ChangeType' essaie de convertir, pas de convertir. Par exemple, ChangeType ne peut pas aller de 'String' à' Nullable '-' TypeConverter' peut. – efdee

11

Essayez Convert.ChangeType

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

Ceci est vraiment un commentaire, pas une réponse à la question. Veuillez utiliser "ajouter un commentaire" pour laisser un commentaire à l'auteur. –

+0

@SteveGuidi: Par défaut déjà édité la réponse dans l'intervalle, tnx aux deux. – SWeko

+1

@SWeko c'est la réponse par défaut lors de l'édition via la page de révision (et cette question était là pour nous deux). Je viens de l'éditer à la place. – Default

3

Je ne pense pas vraiment que je comprends ce que votre essaient de archieve, mais .. vous dire un casting dynamique? Quelque chose comme ceci:

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

Cheers.

Questions connexes