2010-05-27 5 views
48

Я хочу, чтобы преобразовать строку общего типаКак преобразовать строку любого типа

У меня есть это:

string inputValue = myTxtBox.Text;  

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

object propValue = ????? 

Я хочу, чтобы преобразовать «inputString» к типу той собственности, проверьте, совместимо ли оно , как я могу это сделать?

ТКС

ответ

78
using System.ComponentModel; 

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

Я удивлен, что это получает upvotes по сравнению с 'Convert.ChangeType'. –

+6

Возможно, потому что 'ChangeType' пытается использовать, а не конвертировать. Например, ChangeType не может перейти от 'String' к' Nullable '' '' TypeConverter'. – efdee

11

Попробуйте Convert.ChangeType

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

Это действительно комментарий, а не ответ на вопрос. Пожалуйста, используйте «добавить комментарий», чтобы оставить отзыв для автора. –

+0

@SteveGuidi: По умолчанию уже отредактирован ответ, тем временем, tnx для обоих. – SWeko

+1

@SWeko это ответ по умолчанию при редактировании через страницу обзора (и этот вопрос был для нас обоих). Я только что редактировал его. – Default

3

Я действительно не думаю, что я понимаю, что ваши пытаются АРХИВ, но .. вы имеете в виду динамическое литье? Что-то вроде этого:

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

Cheers.

Смежные вопросы