2009-10-06 4 views
0

문자열 유형 이름 = Request.QueryString [ "TypeName"]; 유형 t = Type.GetType (typeName); t.GetField ("SomeField"). SetValue (?, "Hello");동적 유형 필드를 설정하는 방법

위의 코드에서 QueryString에서 이름을 가져온 사용자 정의 유형의 정보를 보유하는 Type 객체를 만듭니다.

이제는이 사용자 지정 형식에 SomeField가 있고이 필드에 값을 할당하려고하지만 어떤 유형이 QueryString에서 왔는지 알 수 없으므로 에 특정 형식을 말할 수 없습니까? SetValue 메서드의 위치입니다.

어떻게해야합니까?

미리 감사드립니다.

답변

4

이것은 잘못된 방법 일 가능성이 큽니다. 당신이 성취하고자하는 것에 대해 좀 더 구체적인 예를들 수 있다면, 아마도 그것을 할 수있는 대체 방법을 줄 수있을 것입니다.

그런데 TypeName 인스턴스가 없으므로 "?"대신에 아무 것도 입력 할 수 없습니다. 그래도 System.Activator을 사용하여 해당 TypeName의 새 인스턴스를 만들 수 있습니다.

예 :

string typeName = Request.QueryString["TypeName"]; 
Type t = Type.GetType(typeName); 
object instance = Activator.CreateInstance(t); 
t.GetField("SomeField").SetValue(instance, "Hello"); 
+0

유형을 달성하기 위해 인스턴스 또는 무언가를 만들 수 없습니다? – Tarik

+2

System.Activator는 인스턴스를 만드는 데 사용합니다. – Jimmy

+0

감사합니다. 그 해결책 외에, 당신이 알고 제안 해 줄 다른 해결책이 있습니까? – Tarik

관련 문제