Llamar a métodos, propiedades y eventos
Un cliente .NET puede llamar a métodos en un objeto COM activo, ajustar sus propiedades y detectar eventos que se originan en el servidor. La coclase Loan (C++ no administrado, ATL) expone los métodos y las propiedades que aparecen como ejemplos de código en esta sección.
Llamar a métodos
Llamar a métodos en un objeto COM desde código administrado es exactamente igual que llamar a métodos en un objeto administrado. Dado que los componentes COM exponen la funcionalidad a través de interfaces, tiene la opción de llamar a métodos en la interfaz o directamente en la coclase COM. Una coclase sólo expone los miembros expuestos por la interfaz predeterminada. En el siguiente ejemplo de código se invoca el método GetFirstPmtDistribution
directamente en la coclase importada:
MorePmts = ln.GetFirstPmtDistribution(ln.Payment, Balance, _
Principal, Interest)
MorePmts = ln.GetFirstPmtDistribution(ln.Payment, out Balance,
out Principal, out Interest);
La interoperabilidad COM calcula las referencias de los tipos de datos automáticamente. Por ejemplo, si se pasa el tipo System.String a un objeto COM, la interoperabilidad COM convierte el tipo en BSTR.
Los parámetros marcados como [out retval] en una biblioteca de tipos se convierten en valores devueltos por métodos. El proceso de conversión quita estos parámetros del prototipo administrado. De forma predeterminada, el motor en tiempo de ejecución produce una excepción en código administrado asignando el error HRESULT a una excepción equivalente administrada.
Obtener y establecer propiedades
Las interfaces COM pueden incluir propiedades como miembros de interfaz. Las propiedades expuestas por un objeto COM pueden obtenerse y establecerse del mismo modo que se obtienen y establecen las propiedades expuestas por una clase administrada. Las interfaces COM y las coclases importadas como metadatos en un ensamblado exponen propiedades y métodos de descriptor de acceso para cada propiedad. En el siguiente ejemplo de código se establece la propiedad OpeningBalance
:
ln.OpeningBalance = Convert.ToDouble(Args(1))
ln.OpeningBalance = Convert.ToDouble(Args[0]);
Para obtener información detallada acerca de la conversión de propiedades, vea Conversión de miembros importados. Para obtener una descripción más general de las propiedades en .NET Framework, vea Información general sobre propiedades.
Controlar eventos
Un cliente .NET puede controlar los eventos que provoca un servidor COM de la misma forma que controla cualquier otro evento administrado. Cuando se importa la biblioteca de tipos del servidor, el proceso de conversión crea delegados que se conectan a los controladores de eventos. Para obtener información detallada acerca de este proceso, vea Controlar eventos provocados por un origen COM.
Observe que los objetos COM que provocan los eventos dentro de un cliente .NET requieren dos colecciones Garbage Collector (GC) antes de ser liberados. Se debe al ciclo de referencia que se produce entre los objetos COM y los clientes administrados. Si necesita liberar un objeto COM explícitamente debe llamar al método Collect dos veces.
Vea también
Tareas
Cómo: Asignar resultados HRESULT y excepciones
Conceptos
Utilizar tipos COM en código administrado
Conversión de miembros importados
Información general sobre propiedades
Ejemplo de interoperabilidad COM: cliente .NET y servidor COM