Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# System.Reflection 네임스페이스 완벽 가이드

C# System.Reflection 네임스페이스란?

C#의 System.Reflection 네임스페이스는 메타데이터를 검사하여 어셈블리(Assembly), 모듈, 멤버, 매개변수 등 코드에 대한 정보를 제공하는 타입들을 포함합니다. 이 네임스페이스의 Assembly 클래스는 어셈블리를 나타내며, 일반적으로 Type 객체의 Assembly 속성을 통해 접근할 수 있습니다.

어셈블리 ID(Identity)의 4가지 구성 요소

어셈블리의 정체성은 다음 네 가지 항목으로 구성됩니다.

  • 단순 이름(Simple Name)
  • 버전(Version) — AssemblyVersion 특성(Attribute)에 지정된 major.minor.build.revision 형식 (지정되지 않으면 0.0.0.0)
  • 문화권(Culture) — 위성 어셈블리(satellite assembly)가 아니면 neutral
  • 공개 키 토큰(Public Key Token) — 강력한 이름(strong name)으로 서명되지 않은 경우 null

정규화된 어셈블리 이름(Fully Qualified Assembly Name)

정규화된 어셈블리 이름은 문자열 형태로, 위의 식별 항목들을 다음과 같은 형식으로 포함합니다.

simple-name, Version=version, Culture=culture, PublicKeyToken=public-key

예를 들어 다음과 같습니다.

Assembly assembly = typeof(Person).Assembly; // Person은 클래스 이름
// 출력: c-sharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Console.WriteLine(assembly.FullName);

어셈블리 로딩(Assembly Loading)

어셈블리 로딩은 알려진 위치에서 어셈블리를 불러오는 과정입니다. 일반적으로 CLR(공용 언어 런타임)은 전체 이름을 사용해 어셈블리를 로드할 수 있으며, 이 과정을 어셈블리 확인(Assembly Resolution)이라고 부릅니다.

어셈블리 확인은 CLR이 의존성을 해결해야 할 때 자동으로 수행되며, 개발자가 런타임에 어셈블리를 동적으로 로드하고 싶을 때는 Assembly.Load(assemblyName) 메서드를 사용하여 직접 수행할 수도 있습니다.