Compartilhar via


Interfaces duplas e eventos

Embora seja possível criar uma interface de evento como uma dupla, há uma série de bons motivos de design para não fazer isso. O motivo fundamental é que a origem do evento só disparará o evento por meio da vtable ou de Invoke, não ambos. Se a origem do evento disparar o evento como uma chamada direta de método vtable, os métodos IDispatch nunca serão usados e ficará claro que a interface deveria ter sido uma interface vtable pura. Se a origem do evento disparar o evento como uma chamada para Invoke, os métodos de vtable nunca serão usados e ficará claro que a interface deveria ter sido dispinterface. Se você definir suas interfaces de evento como duplas, exigirá que os clientes implementem parte de uma interface que nunca será usada.

Observação

Esse argumento não se aplica a interfaces duplas, em geral. Do ponto de vista da implementação, as duplas são uma maneira rápida, conveniente e bem suportada de implementar interfaces acessíveis para uma ampla gama de clientes.

Há outros motivos para evitar interfaces de evento duplo. Nem o Visual Basic nem o Internet Explorer dão suporte a eles.

Confira também

Interfaces duplas e a ATL