Interfaces y eventos duales
Aunque es posible diseñar una interfaz de eventos como dual, hay una serie de buenas razones de diseño para no hacerlo. La razón fundamental es que el origen del evento solo desencadenará el evento mediante la tabla virtual o Invoke
, no ambos. Si el origen del evento desencadena el evento como una llamada de método de tabla virtual directa, los métodos IDispatch
nunca se usarán y está claro que la interfaz debería haber sido una interfaz de tabla virtual pura. Si el origen del evento desencadena el evento como una llamada a Invoke
, los métodos de tabla virtual nunca se usarán y está claro que la interfaz debería haber sido una dispinterface. Si define las interfaces de eventos como duales, necesitará que los clientes implementen parte de una interfaz que nunca se usará.
Nota:
Este argumento no se aplica a las interfaces duales, en general. Desde una perspectiva de implementación, los duales son una forma rápida, cómoda y compatible de implementar interfaces que son accesibles para una amplia gama de clientes.
Hay otras razones para evitar interfaces de eventos duales; ni Visual Basic ni Internet Explorer las admiten.