Equivalencia de tipos y tipos de interoperabilidad incrustados

A partir de .NET Framework versión 4, Common Language Runtime es compatible con la incrustación de información de tipos para los tipos COM directamente en los ensamblados administrados, en lugar de exigir a los ensamblados administrados que obtengan información de tipos para los tipos COM de los ensamblados de interoperabilidad. Dado que la información de tipos incrustada incluye solo los tipos y miembros que utilizan realmente un ensamblado administrado, dos ensamblados administrados pueden tener vistas muy diferentes del mismo tipo COM. Cada ensamblado administrado tiene un objeto Type diferente para representar la vista del tipo COM. Common Language Runtime es compatible con la equivalencia de tipos entre estas distintas vistas para interfaces, estructuras, enumeraciones y delegados.

La equivalencia de tipos significa que un objeto COM que pasa de un ensamblado administrado a otro se puede convertir al tipo administrado adecuado en el ensamblado receptor.

NotaNota

La equivalencia de tipos y los tipos de interoperabilidad incrustados simplifican la implementación de aplicaciones y complementos que utilizan componentes COM, porque no es necesario implementar ensamblados de interoperabilidad con las aplicaciones.Los desarrolladores de componentes COM compartidos deben seguir creando ensamblados de interoperabilidad primarios (PIA) si desean poder utilizar sus componentes en versiones anteriores de .NET Framework.

Equivalencia de tipos

La equivalencia de tipos COM es compatible con interfaces, estructuras, enumeraciones y delegados. Los tipos COM se califican como equivalentes si se cumplen los siguientes requisitos en su totalidad:

  • Los tipos son ambos interfaces o ambos estructuras o ambos enumeraciones o ambos delegados.

  • Los tipos tienen la misma identidad, tal y como se describe en la sección siguiente.

  • Ambos tipos son aptos para la equivalencia de tipos, tal y como se describe en la sección Marcar tipos COM para la equivalencia de tipos.

Identidad de tipo

Se determina que dos tipos tienen la misma identidad cuando sus ámbitos e identidades coinciden, en otras palabras, si ambos tienen el atributo TypeIdentifierAttribute y los dos atributos tienen propiedades Identifier y Scope coincidentes. En la comparación para Scope no se distingue entre mayúsculas y minúsculas.

Si un tipo no tiene el atributo TypeIdentifierAttribute o si tiene un atributo TypeIdentifierAttribute que no especifica ámbito ni identificador, aún así se puede tener en cuenta el tipo para la equivalencia del modo siguiente:

Marcar tipos COM para la equivalencia de tipos

Puede marcar un tipo como apto para la equivalencia de tipos de dos maneras:

  • Aplique el atributo TypeIdentifierAttribute al tipo.

  • Convierta el tipo en un tipo de importación COM. Una interfaz es un tipo de importación COM si tiene el atributo ComImportAttribute. Una interfaz, estructura, enumeración o delegado es un tipo de importación COM si el ensamblado en el que está definido tiene el atributo ImportedFromTypeLibAttribute.

Vea también

Referencia

IsEquivalentTo

Conceptos

Utilizar tipos COM en código administrado

Importar una biblioteca de tipos como un ensamblado