2009-09-11 3 views

답변

6
Type.GetType("class1") 
+0

class1이 전역 이름 공간에있는 경우에만 작동합니다. –

+0

@Peter, 물론 그렇습니다. 훨씬 더 중요한 것은 mscorlib에 정의 된 유형 또는 Type.GetType에 대한 호출을 포함하는 어셈블리에서만 작동한다는 것입니다. –

1

Type.GetType (...)과 Assembly.GetType (...) 모두 정규화 된 형식 이름이 필요합니다. 따라서 네임 스페이스없이 클래스 이름 만 전달하면 Type이 산출되지 않습니다.

이 같은 네임 스페이스를 포함해야합니다 경우 :

Type.GetType("Fully.Qualified.Namespace.class1") 

는 GetType을 (클래스 1)과 같은 결과를 얻을 것이다.

업데이트 :이 느린 작업입니다 가정

GetType().Assembly.GetTypes().First(type => type.Name == "AssemblyModuleTests") 

: 당신이 당신의 클래스의 네임 스페이스를 모른다면, 당신은 현재 어셈블리 유형 (사용의 LINQ의 마음을) 검색을 할 수있는 GetTypes()가 어셈블리의 모든 형식을 열거하기 때문에 정규화 된 이름을 사용하여 형식을 찾는 것보다.

+0

두 번째 쿼리를 AppDomain.CurrentDomain.GetAssemblies()와 결합하여 검색 범위를 추가 할 수 있습니다. –

+0

@Roger - 확실히. 로드 된 모든 어셈블리에서 가능한 모든 유형을로드하므로로드가 더 많이 추가됩니다. 그래서 시나리오에 대해 더 많이 알지 못해서 나는 그것을 추천하지 않을 것입니다 ... –

관련 문제