Compartir a través de


Calcular referencias de interfaces seleccionadas

El objetivo principal del contenedor invocable en tiempo de ejecución (RCW) es ocultar las diferencias entre los modelos de programación administrado y no administrado. Para crear una transición sin problemas, el RCW consume interfaces COM seleccionadas sin exponerlas al cliente .NET, como se muestra en la siguiente ilustración.

Interfaces COM y el contenedor invocable en tiempo de ejecución

RCW con interfaces

Cuando se crea como objeto de enlace en tiempo de compilación, el RCW es un tipo concreto. Implementa las mismas interfaces que el objeto COM y expone los métodos, propiedades y eventos de las interfaces del objeto. En la ilustración, el RCW expone la interfaz INew pero consume las interfaces IUnknown e IDispatch. Además, el RCW expone todos los miembros de la interfaz INew al cliente .NET.

El RCW consume las interfaces que se enumeran en la siguiente tabla, expuestas por el objeto que contiene.

Interfaz

Descripción

IDispatch

Para enlace en tiempo de ejecución a objetos COM mediante la Reflexión.

IErrorInfo

Proporciona una descripción del error, su origen, un archivo de ayuda, contexto de ayuda y el identificador GUID de la interfaz que definió el error (siempre GUID_NULL para las clases .NET).

IProvideClassInfo

Si el objeto COM contenido implementa IProvideClassInfo, el RCW extrae la información de tipo de esta interfaz para proporcionar una mejor identidad de tipo.

IUnknown

Para identidad de objetos, conversión de tipos y administración de la duración:

  • Identidad de objetos

    El motor en tiempo de ejecución distingue los objetos COM comparando el valor de la interfaz IUnknown de cada objeto.

  • Conversión de tipos

    El RCW reconoce la detección dinámica de tipos que realiza el método QueryInterface.

  • Administración de la duración

    Usando el método QueryInterface, el RCW obtiene y guarda una referencia a un objeto no administrado hasta que el motor en tiempo de ejecución realiza la recolección de elementos no utilizados en el contenedor, con lo que se libera el objeto no administrado.

El RCW puede consumir las interfaces que se enumeran en la siguiente tabla, expuestas por el objeto que contiene.

Interfaz

Descripción

IConnectionPoint e IConnectionPointContainer

El RCW convierte objetos que exponen el estilo de evento de punto de conexión en eventos basados en delegados.

IDispatchEx

Si la clase implementa IDispatchEx, el RCW implementa IExpando. La interfaz IDispatchEx es una extensión de la interfaz IDispatch que, a diferencia de IDispatch, permite la enumeración, adición, eliminación y llamada de miembros con distinción de mayúsculas y minúsculas.

IEnumVARIANT

Permite tratar como colecciones los tipos COM compatibles con enumeraciones.

Vea también

Conceptos

Contenedor al que se puede llamar en tiempo de ejecución

Habilitar tipos de .NET para la interoperación

Otros recursos

Resumen de la conversión de ensamblados en bibliotecas de tipos