Megosztás a következőn keresztül:


dirtyCastAndCallOnInterface MDA

Feljegyzés

Ez a cikk a .NET-keretrendszer vonatkozik. Ez nem vonatkozik a .NET újabb implementációira, beleértve a .NET 6-os és újabb verzióit.

A dirtyCastAndCallOnInterface felügyelt hibakeresési segéd (MDA) akkor aktiválódik, ha egy virtuális táblán keresztüli korai kötésű hívást kísérel meg egy olyan osztályfelületen, amely csak későn kötöttként van megjelölve.

Hibajelenségek

Az alkalmazások hozzáférés-megsértést okoznak, vagy váratlan viselkedést váltanak ki, amikor com-on keresztüli korai hívásokat helyeznek a CLR-be.

Ok

A kód egy korai kötésű hívást kísérel meg egy virtuális táblán keresztül egy csak későn kötött osztályfelületen keresztül. Vegye figyelembe, hogy alapértelmezés szerint az osztályfelületek csak késői kötésűként vannak azonosítva. A () értékkel[ClassInterface(ClassInterfaceType.AutoDispatch)] rendelkező AutoDispatch attribútummal ClassInterfaceAttribute későn kötöttként is azonosíthatók.

Resolution (Osztás)

Az ajánlott megoldás egy explicit felület definiálása, amelyet a COM használ, és az automatikusan létrehozott osztályfelület helyett ezen a felületen keresztül kell meghívni a COM-ügyfeleket. Másik lehetőségként a COM-ból érkező hívás késői hívássá alakítható át.IDispatch

Végül meg lehet állapítani, hogy az osztály AutoDual ([ClassInterface(ClassInterfaceType.AutoDual)]) lehetővé teszi a korai kötésű hívások COM-ból való indítását; a használat AutoDual azonban erősen elriasztja a verziószámozási ClassInterfaceAttributekorlátozások miatt.

Effektus a futtatókörnyezetre

Ez az MDA nincs hatással a CLR-re. Csak a késői kötésű felületeken történő korai hívásokkal kapcsolatos adatokat jelenti.

Hozam

A korábban elért mező metódusának vagy nevének neve.

Konfiguráció

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

Lásd még