2009-08-04 3 views

답변

18

typeof 키워드는 컴파일 타임 용도로 사용됩니다. 대신 Type.GetType(string) API를 사용하십시오.

+8

유형이 현재 어셈블리 또는 mscorlib에 없으면 작동하지 않습니다. 그렇지 않으면 네임 스페이스 + 유형뿐만 아니라 전체 어셈블리 규정 이름을 제공해야합니다. –

2

네임 스페이스와 클래스 이름 (질문과 유사)을 사용하여이를 수행하려면 클래스가 포함 된 어셈블리도 알아야합니다.

현재 실행중인 어셈블리 (또는 mscorlib)에 Type이 들어 있으면 Type.GetType(string)을 사용하여 Type을 가져올 수 있습니다.

유형이 다른 어셈블리 (예 : 라이브러리)에 포함되어있는 경우 Assembly.GetType을 대신 사용해야합니다. 그러나 Assembly.Load를 통해 검색하거나 어셈블리 내에서 다른 유형을 사용하여 Assembly 인스턴스를 가져와야합니다.

+2

여전히 Type.GetType을 사용할 수 있습니다. 어셈블리로 한정된 형식 이름 만 있으면됩니다. 내가 설명하기 위해 링크 된 API 문서. –

+0

예 - 내 의견도 그걸 지정했습니다. 어셈블리를 사용하지 않고 질문의 구문 (네임 스페이스 + 유형)을 사용하여로드 할 수 없습니다. –

4

이게 당신이 찾고 있는게 있나요?

Type t = Type.GetType("spork"); 
object myspork = Activator.CreateInstance(t); 
관련 문제