MDA de dirtyCastAndCallOnInterface
El asistente para la depuración administrada (MDA) de dirtyCastAndCallOnInterface se activa cuando se intenta realizar una llamada enlazada en tiempo de ejecución a través de vtable en una interfaz de clase marcada como de enlace en tiempo de ejecución únicamente.
Síntomas
Una aplicación produce una infracción de acceso o presenta un comportamiento inesperado cuando se realiza una llamada enlazada en tiempo de compilación a través de COM en el CLR.
Motivo
El código intenta una llamada enlazada en tiempo de compilación a través de vtable por medio de una interfaz de clase que es enlazada en tiempo de ejecución únicamente. Tenga en cuenta que las interfaces de clase se identifican de forma predeterminada como de enlace en tiempo de ejecución únicamente. También se pueden identificar como enlazadas en tiempo de ejecución con el atributo ClassInterfaceAttribute y un valor AutoDispatch ([ClassInterface(ClassInterfaceType.AutoDispatch)]).
Resolución
La resolución recomendada consiste en definir una interfaz explícita para ser utilizada por COM y que los clientes COM llamen a través de esa interfaz en lugar de hacerlo a través de la interfaz de clase generada automáticamente. Como alternativa, la llamada de COM se puede transformar en una llamada enlazada en tiempo de ejecución a través de IDispatch.
Por último, existe la posibilidad de identificar la clase como AutoDual ([ClassInterface(ClassInterfaceType.AutoDual)]) para permitir que se realicen llamadas enlazadas en tiempo de compilación desde COM; sin embargo, se desaconseja expresamente el uso de AutoDual debido a las limitaciones con respecto las versiones descritas en ClassInterfaceAttribute.
Efecto en el tiempo de ejecución.
Este MDA no tiene efecto en el CLR. Sólo presenta datos sobre las llamadas enlazadas en tiempo de compilación en interfaces enlazadas en tiempo de ejecución.
Output
El nombre del método o el nombre del campo al que se tiene acceso con enlace en tiempo de compilación.
Configuración
<mdaConfig>
<assistants>
<dirtyCastAndCallOnInterface />
</assistants>
</mdaConfig>
Vea también
Referencia
Conceptos
Diagnóstico de errores con ayudantes de depuraciones administradas