이 클래스는 어떻게 컴파일됩니까? I는 원형 기준 컴파일 오류를 예상 한 어떤 이유> ReflectionHelper < 유형에 referance에 있습니다 ReflectionHelper에서어떻게 기본 클래스가 수퍼 유형을 참조하고 컴파일 할 수 있습니까?
public class ReflectionHelper
{
public static IReflectionHelper CreateHelper(object subject)
{
return (IReflectionHelper)Activator.CreateInstance(typeof(ReflectionHelper<>).MakeGenericType(GetFirstGenericArgument(subject)));
}
public static Type GetFirstGenericArgument(object subject)
{
return subject.GetType().GetGenericArguments()[ 0 ];
}
}
public class ReflectionHelper<T> : ReflectionHelper, IReflectionHelper where T : new()
{}
공지 ReflectionHelper <T>
상속한다.
나는이 질문이 "어떻게 가능합니까?"라고 생각합니다. 다른 언어에서 온 경우이 순환 참조는 불가능합니다. Attribute 클래스에 적용된 속성을 살펴보면 두뇌가 아플 수 있습니다. –
컴파일러는 나머지 클래스를 컴파일하기 전에 컴파일 할 모든 클래스에서 충분한 정보를로드합니다. 다행히도 우리는 오래된 언어의 제약이 없습니다 :) –