.NET Framework 4부터 공용 언어 런타임은 관리되는 어셈블리가 interop 어셈블리에서 COM 형식에 대한 형식 정보를 가져오도록 요구하는 대신 COM 형식에 대한 형식 정보를 관리되는 어셈블리에 직접 포함하도록 지원합니다. 포함된 형식 정보에는 관리되는 어셈블리에서 실제로 사용되는 형식 및 멤버만 포함되므로 두 개의 관리되는 어셈블리는 동일한 COM 형식의 보기가 매우 다를 수 있습니다. 관리되는 각 어셈블리에는 COM 형식의 뷰를 나타내는 다른 Type 개체가 있습니다. 공용 언어 런타임은 인터페이스, 구조체, 열거형 및 대리자에 대해 이러한 다양한 보기 간의 형식 동등성을 지원합니다.
형식 동등성은 관리되는 어셈블리에서 다른 어셈블리로 전달되는 COM 개체를 수신 어셈블리의 적절한 관리형 형식으로 캐스팅할 수 있음을 의미합니다.
비고
형식 동등성 및 포함된 interop 형식은 애플리케이션과 interop 어셈블리를 배포할 필요가 없으므로 COM 구성 요소를 사용하는 애플리케이션 및 추가 기능의 배포를 간소화합니다. 공유 COM 구성 요소의 개발자는 이전 버전의 .NET Framework에서 구성 요소를 사용하려는 경우에도 기본 IA(interop 어셈블리)를 만들어야 합니다.
형식 동등성
COM 형식의 동등성은 인터페이스, 구조체, 열거형 및 대리자에 대해 지원됩니다. COM 형식은 다음 조건이 모두 참인 경우 동등한 것으로 간주됩니다.
형식은 모두 인터페이스이거나, 모두 구조체이거나, 모두 열거형이거나, 모두 대리자입니다.
형식은 다음 섹션에 설명된 것과 동일한 ID를 갖습니다.
형식 동등성에 대한 COM 형식 표시 섹션에 설명된 대로 두 형식 모두 형식 동등성에 적합합니다 .
형식 정체성
두 형식은 범위와 ID가 일치할 때 동일한 ID를 가지도록 결정됩니다. 즉, 각각 TypeIdentifierAttribute 특성이 있고 두 특성에 일치 Scope 및 Identifier 속성이 있는 경우입니다. 대/ Scope 소문자를 구분하지 않는 비교입니다.
형식에 특성이 TypeIdentifierAttribute 없거나 범위 및 식별자를 지정하지 않는 특성이 있는 경우에도 TypeIdentifierAttribute 다음과 같이 형식을 동등으로 간주할 수 있습니다.
인터페이스의 경우, GuidAttribute 값이 TypeIdentifierAttribute.Scope 속성 대신 사용되고, Type.FullName 속성(즉, 네임스페이스를 포함한 형식 이름)이 TypeIdentifierAttribute.Identifier 속성 대신 사용됩니다.
구조체, 열거형 및 델리게이트의 경우, 포함된 어셈블리의 GuidAttribute를 사용하며 Scope 속성 대신 Type.FullName 속성이 Identifier 속성으로 사용됩니다.
형식 동등성에 대한 COM 형식 표시
형식을 다음 두 가지 방법으로 형식 동등성에 적합한 것으로 표시할 수 있습니다.
형식에 TypeIdentifierAttribute 특성을 적용합니다.
형식을 COM 가져오기 형식으로 만듭니다. 인터페이스는 ComImportAttribute 속성이 있는 경우 COM 가져오기 형식입니다. 인터페이스, 구조체, 열거형 또는 대리자는 정의된 어셈블리에 ImportedFromTypeLibAttribute 특성이 있는 경우 COM 임포트 형식입니다.
참고하십시오
.NET