dirtyCastAndCallOnInterface MDA
The dirtyCastAndCallOnInterface Assistente de depuração gerenciada (MDA) é ativado quando uma telefonar early limite por meio de uma vtable é tentada em uma interface de classe foi marcada tardia somente.
Sintomas
Um aplicativo lança uma violação de acesso ou tem um comportamento inesperado quando você faz uma telefonar early limite via COM para o CLR.
Causa
Código está tentando uma telefonar early limite por meio de uma vtable por meio de uma interface de classe que só é ligação tardia.Observe que por padrão classe interfaces identificadas sistema autônomo atrasado-limite somente.Eles também podem ser identificados sistema autônomo tardia com a ClassInterfaceAttribute atributo com um AutoDispatch valor)[ClassInterface(ClassInterfaceType.AutoDispatch)]).
Resolução
A resolução recomendada é definir uma interface explícita para uso pelo COM e fazer a telefonar de clientes COM através desta interface em vez de por meio da interface de classe gerado automaticamente.Como alternativa, a telefonar de COM pode ser transformada em uma telefonar de ligação tardia via IDispatch.
Finalmente, é possível identificar a classe de AutoDual ([ClassInterface(ClassInterfaceType.AutoDual)]) para permitir chamadas de limite iniciais seja colocada no COM; no entanto, usando AutoDual é altamente desencorajado causa de controle de controle de versão limitações descritas na ClassInterfaceAttribute.
Efeito sobre o tempo de execução
Este MDA não tem efeito sobre o CLR.Ele só reporta dados sobre chamadas early limite em interfaces de ligação tardia.
Saída
O nome do método ou nome do campo que está sendo acessado early-limite.
Configuração
<mdaConfig>
<assistants>
<dirtyCastAndCallOnInterface />
</assistants>
</mdaConfig>
Consulte também
Conceitos
Diagnosticar erros com assistentes de depuração gerenciadas