Equivalenza del tipo e tipi di interoperabilità incorporatiType equivalence and embedded interop types

A partire dal .NET Framework 4.NET Framework 4, Common Language Runtime supporta l'incorporamento di informazioni sui tipi COM direttamente negli assembly gestiti, anziché richiedere agli assembly gestiti di ottenere informazioni sui tipi COM dagli assembly di interoperabilità.Beginning with the .NET Framework 4.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. Dato che le informazioni sui tipi incorporate includono solo i tipi e membri che vengono effettivamente usati da un assembly gestito, due assembly gestiti potrebbero avere viste diverse dello stesso tipo 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. Ogni assembly gestito a un oggetto Type diverso per rappresentare la vista specifica del tipo COM.Each managed assembly has a different Type object to represent its view of the COM type. Common Language Runtime supporta l'equivalenza del tipo tra queste viste diverse per interfacce, strutture, enumerazioni e delegati.The common language runtime supports type equivalence between these different views for interfaces, structures, enumerations, and delegates.

Equivalenza del tipo significa che è possibile eseguire il cast di un oggetto COM passato da un assembly gestito a un altro sul tipo gestito appropriato nell'assembly ricevente.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.

Nota

L'equivalenza del tipo e i tipi di interoperabilità incorporati semplificano la distribuzione delle applicazioni e dei componenti aggiuntivi che usano componenti COM, perché non è necessario distribuire gli assembly di interoperabilità con le applicazioni.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. Gli sviluppatori di componenti COM condivisi devono ancora creare gli assembly di interoperabilità primari, se vogliono che i componenti possano essere usati da versioni precedenti di .NET Framework.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.

Equivalenza del tipoType equivalence

L'equivalenza dei tipi COM è supportata per interfacce, strutture, enumerazioni e delegati.Equivalence of COM types is supported for interfaces, structures, enumerations, and delegates. I tipi COM sono considerati equivalenti se vengono soddisfatte tutte le condizioni seguenti:COM types qualify as equivalent if all of the following are true:

  • I tipi sono entrambi interfacce o entrambi strutture o entrambi enumerazioni o entrambi delegati.The types are both interfaces, or both structures, or both enumerations, or both delegates.

  • I tipi hanno la stessa identità, come descritto nella sezione successiva.The types have the same identity, as described in the next section.

  • Entrambi i tipi sono idonei per l'equivalenza del tipo, come descritto nella sezione Contrassegno dei tipi COM per l'equivalenza del tipo.Both types are eligible for type equivalence, as described in the Marking COM types for type equivalence section.

Identità dei tipiType identity

Due tipi vengono considerati aventi la stessa identità quando i relativi ambiti e identità corrispondono, in altre parole, se ognuno ha l'attributo TypeIdentifierAttribute e i due attributi hanno proprietà Scope e Identifier corrispondenti.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. Il confronto per Scope non applica la distinzione tra maiuscole e minuscole.The comparison for Scope is case-insensitive.

Se un tipo non ha l'attributo TypeIdentifierAttribute oppure ha un attributo TypeIdentifierAttribute che non specifica l'ambito e l'identificatore, il tipo può ancora essere considerato per l'equivalenza, come indicato di seguito: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:

Contrassegno dei tipi COM per l'equivalenza del tipoMarking COM types for type equivalence

È possibile contrassegnare un tipo come idoneo per l'equivalenza del tipo in due modi:You can mark a type as eligible for type equivalence in two ways:

Vedere ancheSee also

IsEquivalentTo
Uso dei tipi COM nel codice gestitoUsing COM Types in Managed Code
Importazione di una libreria dei tipi come assemblyImporting a Type Library as an Assembly