2009-09-10 3 views
3

C#에서 문자열을 기반으로 개체를 형 변환하는 방법이 있습니까?문자열을 기반으로하는 동적 캐스팅

예,

String typeToCast = control.GetType().Name; 

Button b = (typeToCast)control; 
+2

이해가되지 것입니다 그런 식으로 캐스팅, 정직합니다. 당신이 그렇게 할 이유가 없습니다. – waqasahmed

+1

생성 할 특정 유형의 파일이 있습니다. 수표를 열심히 코딩하고 그런 객체를 만들 수는 있지만 좀 더 우아한 방법을 찾고있었습니다. –

답변

3

아니, 당신은 할 수 없습니다. 당신이 "정적"유형에 할당 가지고 또한, 당신은 무엇을 얻을 것이다, 귀하의 경우,이 버튼의 - 왜 그냥 일반적으로 캐스팅하지 : 컨트롤 인 경우 당신은 hovewer 수

Button b = (Button)control;

는 확인 유형의 :

Type t = TypeFromString(name); 
bool isInstanceOf = t.IsInstanceOfType(control); 

편집 : 그것에서 컴파일 시간을 입력하면 액티베이터 클래스를 사용하지 않고 객체를 만들려면 :

object obj = Activator.CreateInstance(TypeFromString(name)); 
Button button = (Button)obj; //Cast to compile-time known type. 
+0

그렇다면 형식 이름을 가진 개체를 만들 수 있는지 물어보아야합니다. 가능합니다. –

7

예 당신이 할 수 있지만 안된다.

CSHARP

string value = "2.5"; 
object typedObject; 
typedObject = Convert.ChangeType(value, Type.GetType("System.Double")); 

Vbnet는

Dim value As String = "2.5" 
Dim typedObject As Object 
typedObject = Convert.ChangeType(value, Type.GetType("System.Double")) 
관련 문제