Compartir a través de


Interfaces duales varias

Puede que desee combinar las ventajas de una interfaz dual (es decir, la flexibilidad de vtable y el enlace en tiempo de ejecución, para crear la clase disponible para lenguajes de scripting así como C++) con las técnicas de herencia múltiple.

Aunque es posible exponer interfaces duales de un solo objeto COM, no se recomienda.Si hay interfaces duales múltiples, debe haber una interfaz de IDispatch expuesta.Las técnicas disponibles asegurarse que este es el caso contienen las reducciones como pérdida de función o de una mayor complejidad del código.El desarrollador que vea este enfoque debe considerar cuidadosamente las ventajas y desventajas.

Exponer una interfaz Single IDispatch

Es posible exponer interfaces duales de un solo objeto derivando de dos o más especializaciones de IDispatchImpl.Sin embargo, si permite que los clientes para obtener la interfaz de IDispatch , deberá utilizar la macro de COM_INTERFACE_ENTRY2 (o COM_INTERFACE_ENTRY_IID) para especificar qué clase base a utilizar para la implementación de IDispatch.

COM_INTERFACE_ENTRY2(IDispatch, IMyDualInterface)

Porque se expone sólo una interfaz de IDispatch , los clientes que pueden tener acceso a los objetos a través de la interfaz de IDispatch no podrán obtener acceso a los métodos o propiedades en cualquier otra interfaz.

Combinar las interfaces de Varias Dual en una implementación Single IDispatch

ATL no proporciona compatibilidad para combinar interfaces duales varios en una única implementación de IDispatch.Sin embargo, hay varios enfoques conocidos manualmente para combinar las interfaces, como crear una clase de plantilla que contiene una unión de las interfaces independientes de IDispatch , creando un nuevo objeto para realizar la función de QueryInterface , o mediante una implementación typeinfo-basada de objetos anidados para crear la interfaz de IDispatch .

Estos enfoques tienen problemas con conflictos potenciales del espacio de nombres, así como complejidad y mantenimiento del código.No se recomienda crear interfaces duales múltiples.

Vea también

Conceptos

Interfaces duales y ATL