Partager via


Assistant Débogage managé dirtyCastAndCallOnInterface

L'Assistant Débogage managé (MDA, Managed Debugging Assistant) dirtyCastAndCallOnInterface est activé lorsqu'une tentative d'appel à liaison anticipée par un vtable est effectuée sur une interface de classes qui a été marquée comme étant à liaison tardive uniquement.

Symptômes

Une application lève une violation d'accès ou a un comportement imprévisible lorsqu'un appel à liaison anticipée est placé via COM dans le CLR.

Cause

Le code tente un appel à liaison anticipée par un vtable via une interface de classes qui est à liaison tardive uniquement. Notez que, par défaut, les interfaces de classes sont identifiées comme étant à liaison tardive uniquement. Elles peuvent également être identifiées comme étant à liaison tardive avec l'attribut ClassInterfaceAttribute avec une valeur AutoDispatch ([ClassInterface(ClassInterfaceType.AutoDispatch)]).

Solution

La résolution recommandée consiste à définir une interface explicite destinée à être utilisée par COM et à faire appeler les clients COM via cette interface plutôt que via l'interface de classes générée automatiquement. L'appel de COM peut également être transformé en appel à liaison tardive via IDispatch.

Enfin, il est possible d'identifier la classe comme AutoDual ([ClassInterface(ClassInterfaceType.AutoDual)]) pour permettre aux appels à liaison anticipée d'être placés par COM ; toutefois, l'utilisation de AutoDual est fortement déconseillée en raison des limitations de versioning décrites dans ClassInterfaceAttribute.

Effet sur le runtime

Ce MDA n'a aucun effet sur le CLR. Il signale uniquement des données relatives aux appels à liaison anticipée sur les interfaces à liaison tardive.

Sortie

Le nom de la méthode ou le nom du champ en cours d'accès à liaison anticipée.

Configuration

<mdaConfig>
  <assistants>
    <dirtyCastAndCallOnInterface />
  </assistants>
</mdaConfig>

Voir aussi

Référence

ClassInterfaceAttribute

Concepts

Diagnostic d'erreurs avec les Assistants de débogage managés

Autres ressources

Interopérabilité