Utilizar tipos COM en código administrado

Los tipos COM definidos en un ensamblado son iguales que los tipos administrados. Los clientes administrados pueden crear una nueva instancia de un tipo COM de la forma habitual y obtener información de clase mediante metadatos, del mismo modo que lo harían para cualquier otra clase administrada. La sintaxis del método puede inspeccionarse mediante un visor de objetos o puede obtenerse mediante reflexión, del mismo modo que se haría con cualquier otra clase administrada. Cuando el objeto COM devuelve un resultado HRESULT de error, el cliente de .NET Framework detecta la excepción correspondiente.

Hay dos maneras de que la aplicación incluya la información de tipo que habilita la interoperabilidad con tipos COM:

  • Usando tipos de interoperabilidad incrustados: a partir de .NET Framework versión 4, puede indicar al compilador que incruste información de tipo de un ensamblado de interoperabilidad en una aplicación ejecutable. El compilador incrusta solo la información de tipo que su aplicación utiliza. No es necesario implementar el ensamblado de interoperabilidad con la aplicación. Esta es la técnica recomendada.

  • Implementando ensamblados de interoperabilidad: puede crear una referencia estándar a un ensamblado de interoperabilidad. En este caso, el ensamblado de interoperabilidad se debe implementar con la aplicación. Si utiliza esta técnica y no usa ningún componente COM privado, haga siempre referencia al ensamblado de interoperabilidad primario (PIA) publicado por el autor del componente COM que prevé incorporar en el código administrado. Para obtener más información sobre la creación y el uso de ensamblados de interoperabilidad primarios, vea Ensamblados de interoperabilidad primarios.

NotaNota

Al utilizar los tipos de interoperabilidad insertados, puede incrustarlos desde el ensamblado de interoperabilidad primario publicado por el autor del componente COM.Sin embargo, no es necesario implementar el ensamblado de interoperabilidad primario con la aplicación.

Con los tipos de interoperabilidad incrustada se reduce el tamaño de la aplicación, porque la mayoría de las aplicaciones no utilizan todas las características de un componente COM. El compilador es muy eficaz cuando incrusta información de tipos; si la aplicación solo utiliza algunos de los métodos de una interfaz COM, el compilador no incrusta los métodos no usados. Cuando una aplicación que ha incrustado información de tipos interactúa con otra aplicación, o interactúa con una aplicación que utiliza un ensamblado de interoperabilidad primario, Common Language Runtime utiliza las reglas de equivalencia de tipos para determinar si dos tipos con el mismo nombre representan el mismo tipo COM.

Obtener y liberar una referencia a un objeto COM en ejecución, es exactamente igual que obtener y liberar una referencia a cualquier otro objeto administrado en ejecución. Cuando los clientes .NET Framework obtienen y liberan referencias a un objeto COM, el motor en tiempo de ejecución mantiene el número de referencias en el objeto COM, del mismo modo que lo haría cualquier otro cliente COM. Los clientes .NET Framework pueden comportarse como si el objeto estuviese sujeto a la recolección de elementos no utilizados, del mismo modo que lo harían para cualquier objeto de servidor administrado.

Visual Studio facilita la información de incrustación de tipos en una aplicación o complemento. Para obtener ejemplos, vea Tutorial: Incrustar información de tipos de los ensamblados de Microsoft Office (C# y Visual Basic) y Tutorial: Incrustar los tipos de los ensamblados administrados (C# y Visual Basic).

Para obtener los ejemplos de código que acompañan a los temas de esta sección, vea Ejemplo de interoperabilidad COM: cliente .NET y servidor COM.

Las reglas de la equivalencia de tipos se comentan en Equivalencia de tipos y tipos de interoperabilidad incrustados. Sin embargo, no es preciso conocerlas para utilizar objetos COM.

Vea también

Tareas

Tutorial: Incrustar los tipos de los ensamblados administrados (C# y Visual Basic)

Conceptos

Exponer componentes COM en .NET Framework

Inspeccionar un ensamblado para tipos COM

Activar un objeto COM

Llamar a métodos, propiedades y eventos

Consideraciones de diseño para interoperaciones

Contenedores COM

Otros recursos

Tutorial: Incrustar información de tipos de los ensamblados de Microsoft Office (C# y Visual Basic)