2010-05-27 2 views
48

모든 유형의 문자열을 변환하는 방법내가 제네릭 형식 문자열을 변환 할

나는이있다 :

I가, 해당 속성의 유형 'inputString을'변환 할
string inputValue = myTxtBox.Text;  

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

object propValue = ????? 

호환되는지 확인하십시오. 어떻게하면됩니까?

TKS

답변

78
using System.ComponentModel; 

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

나는 이것이 Convert.ChangeType과 비교하여 upvotes를 얻는 것에 놀랐다. –

+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

I하지 정말 당신이 archieve하려는 것을 이해 생각하지만, 동적 캐스팅을 의미 ..? 이 같은 것 :

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

건배.

관련 문제