Duální rozhraní a události
I když je možné navrhnout rozhraní událostí jako duální, existuje řada dobrých důvodů, proč to udělat. Základním důvodem je, že zdroj události aktivuje událost pouze prostřednictvím virtuální tabulky nebo prostřednictvím Invoke
, nikoli obojího. Pokud zdroj události aktivuje událost jako přímé volání metody vtable, IDispatch
metody se nikdy nepoužijí a je jasné, že rozhraní by mělo být čistě vtable rozhraní. Pokud zdroj událostí aktivuje událost jako volání Invoke
, metody vtable se nikdy nepoužijí a je jasné, že rozhraní by mělo být dispinterface. Pokud definujete rozhraní událostí jako duální, budete vyžadovat, aby klienti implementovali část rozhraní, které se nikdy nepoužije.
Poznámka:
Tento argument se obecně nevztahuje na duální rozhraní. Z hlediska implementace jsou duální systémy rychlým, pohodlným a dobře podporovaným způsobem implementace rozhraní, která jsou přístupná široké škále klientů.
Existují další důvody, proč se vyhnout duálním rozhraním událostí; Visual Basic ani Internet Explorer je nepodporují.