2011-10-20 6 views
1

문자열 변수를 사용하여 특정 클래스와 연결된 속성을 가져 오는 방법은 무엇입니까? 나는 다음과 같이 클래스 이름을 사용하는 경우 : -문자열 이름을 사용하여 클래스 속성에 액세스

Treblet 다음 I 클래스의 속성 수를 얻을 수있는 클래스 이름입니다
PropertyInfo[] propertyInfo = typeof(Treblet).GetProperties();  

. 하지만 어떻게 클래스의 이름을 문자열 변수로 대체 할 수 있습니까? 모든 도움을 주셔서 감사합니다.

답변

1
string typeToSearchFor = "Treblet"; 
PropertyInfo[] propertyInfo = 
    Assembly.GetExecutingAssembly().GetTypes().Where(
     t => t.Name == typeToSearchFor).FirstOrDefault().GetProperties(); 

이 트릭을 수행해야합니다. 형식이 정의 된 어셈블리를 검색해야합니다. 간단히하기 위해 실행중인 어셈블리를 검색했습니다.

참고 Name은 형식의 이름이고 FullName은 완전히 네임 스페이스로 지정된 형식의 이름입니다.

+0

정말 멋진 코드 라인입니다. 실제로 코드를 작성하려고했으나 할 수 없었습니다. 많은 많은 감사합니다. – user995689

1

다시 조치해야합니다. 문제는 속성을 얻지 못하고 GetProperties을 호출하는 Type 값을 갖게됩니다. 이를 위해서는 Assembly.GetType(string) 또는 Type.GetType(string)이 필요합니다. 두 경우 모두 네임 스페이스 한정 이름이 필요합니다. Guid이 아닌 System.Guid입니다. 당신은 다른 어셈블리의 유형을 찾기 위해 어셈블리 지정된 이름이 필요합니다 - 당신이 단지 네임 스페이스 자격을 갖춘 이름으로 Type.GetType(string)을 사용하는 경우

, 그것은 단지 mscorlib에와 호출 어셈블리에서 확인합니다.

관련 문제