2012-05-30 3 views
1

모듈을 추가하는 데 필요한 일부 코드로 작업했는데 올바르게 설정했지만 모든 것이 올바르게 설정되었다고 생각했지만 마지막 비트는 저를 곤혹스럽게 만들었습니다.typeof (T) .AssemblyQualifiedName returns null

그것은, 내가 그 마지막 줄에 예외를 던지고 그러나 나는 다음이

var type = Type.GetType(name); 

을 할 수 있도록 일반적인 방법

var name typeof(T).AssemblyQualifiedName; 

에 유형에 비교적 간단 통과하고있어 보인다 namenull

주위를 읽었습니다. 나는 GetType이 정규화 된 어셈블리 이름이지만 왜 null로 되돌아 오는 지 이해할 수 없습니다.

형식이 참조 된 방식을 알고 있으므로 AssemblyQualifiedName이 유형에서 방출되었다고 가정 할 때 근본적으로 잘못된 코드를 수행한다는 의미입니까?

+0

typeof (T) .AssemblyFullName을 시도하고 얻은 결과를 볼 수 있습니까? – eyossi

답변

8

AssemblyQualifiedName는 null :

하여 유형이로드 된 어셈블리의 이름, 또는 null을 포함하는 유형의 조립 자격을 갖춘 이름은 현재 인스턴스가 제네릭을 나타내는 경우 유형 매개 변수. 그것은을 보지 않습니다

당신이 정말 typeof(T)를 사용하는 경우 실제로는 제네릭 형식 매개 변수를 대표해야처럼 - 일반적인 방법이 몇 가지 이상한 방법으로 반사를 통해 호출되지 않는 한.

Type.GetType을 사용하려고합니까? 당신이 필요로하는 것처럼 들린다.

var type = typeof(T); 

... 원하는대로 정확하게하지 않겠습니까? 왜 유형의 이름을 통해 가야합니까?

+0

당신이 옳다. 나의 특별한 경우에'typeof (T)'가 충분히 작동한다. 그러나 다른 종속 코드로 인해 변경 될 수는 없으며 특정 프로젝트에서 Post Build Events가 누락되어 'AssemblyQualifiedName'이'Null '인 이유를 발견했습니다. – Chris

관련 문제