Development/C#
[제프리 리처의 CLR via C#] 실행 중에 타입에 대한 참조를 어떻게 찾아내는가
오늘도 진이
2021. 3. 30. 16:41
목차
1부. CLR의 기본
3장. 공유 어셈블리와 강력한 이름의 어셈블리
실행 중에 타입에 대한 참조를 어떻게 찾아내는가
- 참조된 타입을 찾아낼 때 CLR은 다음 세 위치 중 한 곳에서 타입을 찾아내게 된다.
- 같은 파일: 같은 파일 안에 들어있는 타입에 대한 엑세스는 컴파일 시점에 파악이 완료되며 이를 "초기 바인딩"(Early Bound)이라고 이야기하기도 한다. 파일에서 직접 타입을 로드하며, 실행을 계속한다.
- 다른 파일, 같은 어셈블리: 실행 시점에서 찾는 타입이 어셈블리의 대표 매니페스트상의 ModuleRef 테이블에 서술된 파일 안에 찾는 내용이 들어있을 것이라는 전제에서 출발한다. CLR은 어셈블리의 매니페스트 파일이 로드된 디렉터리를 검색하여 파일을 찾으면 파일의 무결성을 검증하기 위하여 해시 값을 확인하고, 타입이 발견되면 해당 타입을 로드하여 실행을 계속한다.
- 다른 파일, 다른 어셈블리: 만약 참조하는 타입이 다른 어셈블리의 파일에 있는 경우, 실행 시점에 참조되는 어셈블리의 매니페스트를 로드하게 된다. 만약 매니페스트 안에서 해당 타입을 찾을 수 없는 경우, 매니페스트와 연결된 실제 파일을 찾아 다시 로드하게 된다. 정확한 타입을 찾으면, 해당 타입을 로드하여 실행을 계속한다.
Uploaded by Notion2Tistory v1.1.0