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


Együttműködési lehetőségek áttekintése

Az interoperabilitás lehetővé teszi, hogy megőrizze és kihasználja a nem felügyelt kódba történő meglévő beruházásokat. A közös nyelvi futtatókörnyezet (CLR) felügyelete alatt futó kód felügyelt kód, a CLR-en kívül futó kód pedig nem felügyelt kód. A COM, a COM+, a C++ összetevők, az ActiveX-összetevők és a Microsoft Windows API nem felügyelt kódra mutatnak példákat.

A .NET platformhívási szolgáltatásokon, a névtéren, a C++ együttműködésen és a COM-együttműködésen (COM interop) keresztül teszi lehetővé a System.Runtime.InteropServices nem felügyelt kódokkal való együttműködést.

Platform Meghívás

A platformhívás olyan szolgáltatás, amely lehetővé teszi, hogy a felügyelt kód meghívja a dinamikus kapcsolatkódtárakban (DLL-kben) implementált nem felügyelt függvényeket, például a Microsoft Windows API-t. Megkeresi és meghívja az exportált függvényeket, és szükség szerint meghozza az argumentumait (egész számokat, sztringeket, tömböket, struktúrákat stb.) az együttműködés határán.

További információ: A nem felügyelt DLL-függvények használata és a platformhívás használata WAV-fájlok lejátszásához.

Megjegyzés:

A Common Language Runtime (CLR) kezeli a rendszererőforrásokhoz való hozzáférést. A CLR-en kívüli nem felügyelt kód meghívása áthalad ezen a biztonsági mechanizmuson, ezért biztonsági kockázatot jelent. A nem felügyelt kód például közvetlenül hívhatja meg a nem felügyelt kód erőforrásait, megkerülve a CLR biztonsági mechanizmusait. További információ: Biztonság a .NET-ben.

C++ Interop

A C++ interop, más néven It Just Works (IJW) használatával natív C++ osztályt csomagolhat be. A C++ interop lehetővé teszi a C# vagy egy másik .NET nyelven létrehozott kód elérését. Natív DLL- vagy COM-összetevő burkolásához C++ kódot kell írnia. Más .NET-nyelvektől eltérően a Visual C++ együttműködési támogatással rendelkezik, amely lehetővé teszi a felügyelt és nem felügyelt kódot ugyanabban az alkalmazásban és még ugyanabban a fájlban is. Ezután a /clr fordítókapcsolóval elkészítheti a C++ kódot egy felügyelt szerelvény létrehozásához. Végül hozzáad egy hivatkozást a C#-projekt szerelvényéhez, és ugyanúgy használja a burkolt objektumokat, mint más felügyelt osztályokat.

COM-összetevők hozzáférhetővé tétele a C# számára

A COM-összetevőt C#-projektből is felhasználhatja. Az általános lépések a következők:

  1. Keresse meg a használni és regisztrálni kívánt COM-összetevőt. Com DLL regisztrálásához vagy törléséhez használja a regsvr32.exe.
  2. Adja hozzá a projekthez a COM-összetevőre vagy típustárra mutató hivatkozást. A hivatkozás hozzáadásakor a Visual Studio a Tlbimp.exe (Típustár-importáló) használatával ad ki egy .NET interop-szerelvényt, amely bemenetként egy típustárat használ. A futtatókörnyezeti hívható burkolónak (RCW) is nevezett szerelvény felügyelt osztályokat és interfészeket tartalmaz, amelyek a típustárban lévő COM-osztályokat és interfészeket burkolják. A Visual Studio a létrehozott szerelvényre mutató hivatkozást ad hozzá a projekthez.
  3. Hozzon létre egy példányt az RCW-ben definiált osztályból. Az osztály egy példányának létrehozása létrehozza a COM-objektum egy példányát.
  4. Használja az objektumot ugyanúgy, mint más felügyelt objektumokat. Ha az objektumot szemétgyűjtéssel visszanyeri, a COM-objektum példánya is felszabadul a memóriából.

További információ: COM-összetevők megjelenítése a .NET-keretrendszerben.

C# hozzáférhetővé tétele a COM számára

A COM-ügyfelek megfelelően közzétett C#-típusokat használhatnak. A C#-típusok használatának alapvető lépései a következők:

  1. Interop attribútumok hozzáadása a C# projekthez. A C#-projekt tulajdonságainak módosításával láthatóvá teheti a szerelvény COM-t. További információ: Szerelvényadatok párbeszédpanel.
  2. Hozzon létre egy COM-típusú könyvtárat, és regisztrálja COM használatra. A C# projekttulajdonságok módosításával automatikusan regisztrálhatja a C#-szerelvényt a COM-interophoz. A Visual Studio a Regasm.exe (szerelvényregisztrációs eszköz) használatát a /tlb parancssori kapcsolóval együtt alkalmazza, amely bemenetként egy felügyelt szerelvényt vesz fel, hogy típustárat hozzon létre. Ez a típustár ismerteti a public szerelvény típusait, és hozzáadja a beállításjegyzék bejegyzéseit, hogy a COM-ügyfelek felügyelt osztályokat hozzanak létre.

További információ: .NET-keretrendszerösszetevők megjelenítése COM-nak és példa COM-osztálynak.

Lásd még