Interfacce duali e eventi
Sebbene sia possibile progettare un'interfaccia di evento come doppia, esistono diversi motivi di progettazione validi per non farlo. Il motivo fondamentale è che l'origine dell'evento genererà solo l'evento tramite la vtable o tramite Invoke
, non entrambi. Se l'origine evento genera l'evento come chiamata diretta al metodo vtable, i IDispatch
metodi non verranno mai usati ed è chiaro che l'interfaccia deve essere un'interfaccia vtable pura. Se l'origine evento genera l'evento come chiamata a Invoke
, i metodi della tabella virtuale non verranno mai usati ed è chiaro che l'interfaccia avrebbe dovuto essere un carattere dispinterfaccia. Se definisci le interfacce evento come duali, dovrai richiedere ai client di implementare parte di un'interfaccia che non verrà mai usata.
Nota
Questo argomento non si applica alle interfacce duali, in generale. Dal punto di vista dell'implementazione, i duali sono un modo rapido, pratico e ben supportato di implementare interfacce accessibili a un'ampia gamma di client.
Esistono ulteriori motivi per evitare interfacce di eventi duali; né Visual Basic né Internet Explorer li supportano.