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


Típustár importálása szerelvényként

A COM-típusdefiníciók általában egy típustárban találhatók. Ezzel szemben a CLS-kompatibilis fordítók típus-metaadatokat hoznak létre egy szerelvényben. A két típusinformációforrás meglehetősen eltérő. Ez a témakör a metaadatok típustárból történő létrehozásának technikáiról szól. Az eredményül kapott szerelvényt interop szerelvénynek nevezzük, és a benne található típusinformációk lehetővé teszik .NET-keretrendszer alkalmazások számára a COM-típusok használatát.

Kétféleképpen teheti elérhetővé ezt a típusinformációt az alkalmazás számára:

  • Csak tervezésre alkalmas interop szerelvények használata: A .NET-keretrendszer 4-től kezdve utasíthatja a fordítót, hogy ágyazza be a típusadatokat az interop szerelvényből a végrehajthatóba. A fordító csak az alkalmazás által használt típusadatokat ágyazza be. Nem kell üzembe helyeznie az interop szerelvényt az alkalmazással. Ez az ajánlott technika.

  • Interop szerelvények üzembe helyezése: Létrehozhat egy szabványos hivatkozást az interop szerelvényre. Ebben az esetben az interop-szerelvényt az alkalmazással együtt kell üzembe helyezni. Ha ezt a technikát alkalmazza, és nem magánhálózati COM-összetevőt használ, mindig hivatkozzon a felügyelt kódba beépíteni kívánt COM-összetevő szerzője által közzétett elsődleges interop szerelvényre (PIA). Az elsődleges interop szerelvények előállításával és használatával kapcsolatos további információkért tekintse meg az elsődleges interop szerelvényeket.

Ha csak tervezési idejű interop szerelvényeket használ, a COM-összetevő szerzője által közzétett elsődleges interop-szerelvény típusadatait ágyazhatja be. Az elsődleges interop-szerelvényt azonban nem kell üzembe helyeznie az alkalmazással.

A csak tervezéshez szükséges interop szerelvények használata csökkenti az alkalmazás méretét, mivel a legtöbb alkalmazás nem használja a COM-összetevők összes funkcióját. A fordító nagyon hatékony a típusinformációk beágyazásakor; ha az alkalmazás csak néhány módszert használ egy COM-felületen, a fordító nem ágyazza be a nem használt metódusokat. Ha egy beágyazott típusinformációval rendelkező alkalmazás egy másik ilyen alkalmazással kommunikál, vagy egy elsődleges interop-szerelvényt használó alkalmazással kommunikál, a közös nyelvi futtatókörnyezet típusegyenlítési szabályokkal állapítja meg, hogy két azonos nevű típus ugyanazt a COM-típust képviseli-e. A COM-objektumok használatához nem kell ismernie ezeket a szabályokat. Ha azonban érdeklik a szabályok, tekintse meg a Típusegyenlőség és a Beágyazott interop típusok című témakört.

Metaadatok létrehozása

A COM-típusú kódtárak lehetnek különálló fájlok, amelyek .tlb kiterjesztéssel rendelkeznek, például Loanlib.tlb. Egyes típuskódtárak egy .dll vagy .exe fájl erőforrásszakaszába vannak beágyazva. A típustár információinak további forrásai az .olb és az .ocx fájlok.

Miután megtalálta a cél COM-típus implementálását tartalmazó típustárat, a következő lehetőségek állnak rendelkezésre a típus metaadatait tartalmazó interop szerelvény létrehozásához:

  • Visual Studio

    A Visual Studio automatikusan metaadatokká alakítja a típustárak COM-típusait egy szerelvényben. Útmutatásért lásd : Hivatkozás hozzáadása típuskódtárakhoz.

  • Típustár-importáló (Tlbimp.exe)

    A Típustár-importáló parancssori lehetőségeket biztosít a metaadatok módosításához az eredményül kapott interop fájlban, importálja a típusokat egy meglévő típustárból, és létrehoz egy interop szerelvényt és egy névteret. Útmutatásért lásd : Interop szerelvények létrehozása típuskódtárakból.

  • System.Runtime.InteropServices.TypeLibConverter Osztály

    Ez az osztály metódusokat biztosít a típustárakban lévő társosztályok és felületek szerelvényen belüli metaadatokká alakításához. Ugyanazt a metaadat-kimenetet állítja elő, mint Tlbimp.exe. A Tlbimp.exe ellentétben azonban az TypeLibConverter osztály képes metaadatokká alakítani a memóriabeli típusú kódtárakat.

  • Egyéni burkolók

    Ha egy típustár nem érhető el vagy helytelen, az egyik lehetőség az osztály vagy felület duplikált definíciójának létrehozása a felügyelt forráskódban. Ezután lefordítja a forráskódot egy fordítóval, amely a futtatókörnyezetet célozza meg metaadatok előállításához egy szerelvényben.

    A COM-típusok manuális definiálásához hozzáféréssel kell rendelkeznie a következő elemekhez:

    • A definiált társosztályok és interfészek pontos leírása.

    • Egy fordító, például a C# fordító, amely képes létrehozni a megfelelő .NET-keretrendszer osztálydefiníciókat.

    • A kódtár-szerelvény típusú konverziós szabályok ismerete.

    Az egyéni burkoló írása speciális technika. Az egyéni burkolók létrehozásának módjáról további információt a Standard burkolók testreszabása című témakörben talál.

A COM interop importálási folyamatával kapcsolatos további információkért lásd : Típustár a szerelvénykonvertálás összegzése.

Lásd még