다음을 통해 공유


MetadataLoadContext.CoreAssembly 속성

정의

Int32와 같이 잘 알려진 형식을 포함하는 "시스템 어셈블리"를 나타내는 어셈블리를 가져오거나 설정합니다.

public:
 property System::Reflection::Assembly ^ CoreAssembly { System::Reflection::Assembly ^ get(); };
public System.Reflection.Assembly? CoreAssembly { get; }
member this.CoreAssembly : System.Reflection.Assembly
Public ReadOnly Property CoreAssembly As Assembly

속성 값

Assembly 인스턴스입니다.

설명

이러한 잘 알려진 형식에 대한 참조는 일반 형식과 달리 어셈블리 참조를 포함하지 않으므로 핵심 어셈블리는 다른 어셈블리와 다르게 처리됩니다.

일반적으로 이 어셈블리의 이름은 "mscorlib" 또는 "netstandard"입니다. 핵심 어셈블리를 찾을 수 없는 경우 값은 null이고 메서드 서명을 구문 분석하는 메서드를 비롯한 다른 많은 리플렉션 메서드는 예외를 throw합니다.

CoreAssembly 은 생성자에 전달된 매개 변수를 메서드에 MetadataAssemblyResolver 전달 coreAssemblyName 하여 MetadataAssemblyResolver.Resolve 결정됩니다.

의 생성자에 MetadataLoadContext인수가 지정되지 않은 coreAssemblyName 경우 "mscorlib", "System.Runtime" 및 "netstandard"를 비롯한 기본값이 사용됩니다.

지정된 코어 어셈블리는 코어 형식을 직접 포함할 필요가 없습니다. 다른 어셈블리에 전달을 입력할 수 있습니다. 따라서 mscorlib 외관을 지정된 코어 어셈블리로 사용하는 것이 완벽하게 허용됩니다.

System.Runtime 와 같은 DllImportAttributeinterop 관련 의사 사용자 지정 특성 형식 중 일부를 제외하므로 이상적인 핵심 어셈블리가 아닙니다. 그러나 이러한 특성에 관심이 없는 경우 서비스를 제공할 수 있습니다. 핵심 어셈블리에 필요한 형식이 포함되지 않은 경우 CustomAttributes API는 해당 특성을 건너뜁니다.

코어 어셈블리는 필요할 때까지 로드되지 않습니다. 다음 API는 핵심 어셈블리에 대한 검색을 트리거하지 않습니다.

코어 어셈블리를 찾을 수 없거나 코어 어셈블리에 형식이 없는 경우 다음과 같이 의 동작에 MetadataLoadContext 영향을 줍니다.

  • 서명 또는 typespecs를 구문 분석하고 개체로 Type 결과를 반환해야 하는 API는 예외를 throw합니다. 예를 들면 다음과 같습니다.

  • 형식을 잘 알려진 코어 형식과 비교해야 하는 API는 예외를 throw하지 않으며 비교는 로 false평가됩니다. 예를 들어 코어 어셈블리를 지정하지 않으면 는 IsPrimitive 라는 Int32형식을 비롯한 모든 항목에 대해 를 반환 false 합니다. 마찬가지로 는 Type.GetTypeCode 모든 항목에 대해 를 반환 Object 합니다.

  • 메타데이터 엔터티가 표면의 플래그를 의사 사용자 지정 특성으로 설정하고 코어 어셈블리에 의사 사용자 지정 특성 형식, 필요한 생성자 또는 생성자의 매개 변수 형식이 포함되어 있지 않으면 이 MetadataLoadContext throw되지 않습니다. 반환된 특성 목록에서 의사 사용자 지정 특성을 생략합니다.

적용 대상