DirtyCastAndCallOnInterface
Der DirtyCastAndCallOnInterface-MDA (Managed Debugging Assistant, Assistent für verwaltetes Debuggen) wird aktiviert, wenn für eine Klassenschnittstelle, die ausschließlich für späte Bindung gekennzeichnet ist, ein früh gebundener Aufruf über eine Vtable erfolgt.
Im Programmcode wird ein früh gebundener Aufruf über eine Vtable per Klassenschnittstelle versucht, die nur spät gebunden wird. Beachten Sie, dass Klassenschnittstellen standardmäßig als ausschließlich spät gebunden gekennzeichnet sind. Sie können auch mit dem ClassInterfaceAttribute-Attribut mit einem AutoDispatch-Wert ([ClassInterface(ClassInterfaceType.AutoDispatch)]) als spät gebunden gekennzeichnet sein.
Zur Lösung wird empfohlen, eine explizite Schnittstelle für die Verwendung von COM zu definieren und Aufrufe von COM-Clients über diese Schnittstelle erfolgen zu lassen, nicht über die automatisch generierte Klassenschnittstelle. Wahlweise kann der Aufruf aus COM über IDispatch in einen spät gebundenen Aufruf umgewandelt werden.
Schließlich kann die Klasse auch als AutoDual ([ClassInterface(ClassInterfaceType.AutoDual)]) gekennzeichnet werden, um früh gebundene Aufrufe aus COM zuzulassen. Aufgrund der unter ClassInterfaceAttribute beschriebenen Versionseinschränkungen wird jedoch dringend von der Verwendung von AutoDual abgeraten.