Duale Schnittstellen und Ereignisse
Obwohl es möglich ist, eine Ereignisschnittstelle als Dual zu entwerfen, gibt es eine Reihe von guten Entwurfsgründen, dies nicht zu tun. Der Grund dafür ist, dass die Quelle des Ereignisses nur das Ereignis über die vtable oder über Invoke
, nicht beides auslösen wird. Wenn die Ereignisquelle das Ereignis als direkten vtable-Methodenaufruf auslöst, werden die IDispatch
Methoden nie verwendet, und es ist klar, dass die Schnittstelle eine reine vtable-Schnittstelle sein sollte. Wenn die Ereignisquelle das Ereignis als Aufruf Invoke
auslöst, werden die vtable-Methoden nie verwendet, und es ist klar, dass die Schnittstelle eine Dispinterface sein sollte. Wenn Sie Ihre Ereignisschnittstellen als Duals definieren, müssen Sie Clients einen Teil einer Schnittstelle implementieren, die niemals verwendet wird.
Hinweis
Dieses Argument gilt im Allgemeinen nicht für duale Schnittstellen. Aus Implementierungsperspektive sind Duals eine schnelle, bequeme und gut unterstützte Methode der Implementierung von Schnittstellen, die für eine vielzahl von Clients zugänglich sind.
Es gibt weitere Gründe, duale Ereignisschnittstellen zu vermeiden; Weder Visual Basic noch Internet Explorer unterstützen sie.
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für