형식 동등 및 포함된 Interop 형식Type equivalence and embedded interop types

.NET Framework 4부터 공용 언어 런타임은 관리되는 어셈블리가 interop 어셈블리에서 COM 형식에 대한 형식 정보를 가져오도록 요구하는 대신 COM 형식에 대한 형식 정보를 관리되는 어셈블리에 직접 포함하는 기능을 지원합니다.Beginning with the .NET Framework 4, the common language runtime supports embedding type information for COM types directly into managed assemblies, instead of requiring the managed assemblies to obtain type information for COM types from interop assemblies. 포함된 형식 정보에는 관리되는 어셈블리에서 실제로 사용되는 형식 및 멤버만 포함되므로 두 개의 관리되는 어셈블리에서 동일한 COM 형식이 전혀 다르게 표시될 수 있습니다.Because the embedded type information includes only the types and members that are actually used by a managed assembly, two managed assemblies might have very different views of the same COM type. 관리되는 어셈블리마다 COM 형식의 해당 보기를 나타내는 다른 Type 개체가 있습니다.Each managed assembly has a different Type object to represent its view of the COM type. 공용 언어 런타임은 인터페이스, 구조체, 열거형 및 대리자에 대한 이러한 다양한 보기 간에 형식 동등을 지원합니다.The common language runtime supports type equivalence between these different views for interfaces, structures, enumerations, and delegates.

형식 동등은 관리되는 어셈블리 간에 전달되는 COM 개체를 수신 어셈블리에서 적절한 관리되는 형식으로 캐스팅할 수 있음을 의미합니다.Type equivalence means that a COM object that is passed from one managed assembly to another can be cast to the appropriate managed type in the receiving assembly.

참고

형식 동등 및 포함된 interop 형식은 애플리케이션과 함께 interop 어셈블리를 배포할 필요가 없기 때문에 COM 구성 요소를 사용하는 애플리케이션 및 추가 기능의 배포를 간소화합니다.Type equivalence and embedded interop types simplify the deployment of applications and add-ins that use COM components, because it is not necessary to deploy interop assemblies with the applications. 공유 COM 구성 요소의 개발자는 이전 버전의 .NET Framework에서 해당 구성 요소를 사용하려는 경우 여전히 PIA(주 interop 어셈블리)를 만들어야 합니다.Developers of shared COM components still have to create primary interop assemblies (PIAs) if they want their components to be used by earlier versions of the .NET Framework.

형식 동등Type equivalence

COM 형식 동등은 인터페이스, 구조체, 열거형 및 대리자에 대해 지원됩니다.Equivalence of COM types is supported for interfaces, structures, enumerations, and delegates. COM 형식은 다음 조건이 모두 true인 경우 동등합니다.COM types qualify as equivalent if all of the following are true:

  • 형식이 둘 다 인터페이스, 둘 다 구조체, 둘 다 열거형 또는 둘 다 대리자입니다.The types are both interfaces, or both structures, or both enumerations, or both delegates.

  • 다음 섹션에 설명된 대로 형식의 ID가 같습니다.The types have the same identity, as described in the next section.

  • COM 형식에 형식 동등 표시 섹션에 설명된 대로 두 형식이 모두 형식 동등에 적합합니다.Both types are eligible for type equivalence, as described in the Marking COM types for type equivalence section.

형식 IDType identity

두 형식은 해당 범위 및 ID가 일치할 때, 즉 각각 TypeIdentifierAttribute 특성이 있고 두 특성에 일치하는 ScopeIdentifier 속성이 있는 경우 ID가 같다고 확인됩니다.Two types are determined to have the same identity when their scopes and identities match, in other words, if they each have the TypeIdentifierAttribute attribute, and the two attributes have matching Scope and Identifier properties. Scope 비교는 대/소문자를 구분하지 않습니다.The comparison for Scope is case-insensitive.

형식에 TypeIdentifierAttribute 특성이 없는 경우 또는 범위 및 식별자를 지정하지 않는 TypeIdentifierAttribute 특성이 있는 경우에도 다음과 같이 해당 형식의 동등을 고려할 수 있습니다.If a type does not have the TypeIdentifierAttribute attribute, or if it has a TypeIdentifierAttribute attribute that does not specify scope and identifier, the type can still be considered for equivalence as follows:

COM 형식에 형식 동등 표시Marking COM types for type equivalence

다음 두 가지 방법으로 형식을 형식 동등에 적합한 것으로 표시할 수 있습니다.You can mark a type as eligible for type equivalence in two ways:

  • 형식에 TypeIdentifierAttribute 특성을 적용합니다.Apply the TypeIdentifierAttribute attribute to the type.

  • 형식을 COM 가져오기 형식으로 지정합니다.Make the type a COM import type. ComImportAttribute 특성이 있는 인터페이스는 COM 가져오기 형식입니다.An interface is a COM import type if it has the ComImportAttribute attribute. 인터페이스, 구조체, 열거형 또는 대리자가 정의되어 있는 어셈블리에 ImportedFromTypeLibAttribute 특성이 있는 경우 해당 항목은 COM 가져오기 형식입니다.An interface, structure, enumeration, or delegate is a COM import type if the assembly in which it is defined has the ImportedFromTypeLibAttribute attribute.

참조See also