Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Met interoperabiliteit kunt u bestaande investeringen in onbeheerde code behouden en benutten. Code die wordt uitgevoerd onder het beheer van de Common Language Runtime (CLR) is beheerde code en code die buiten de CLR wordt uitgevoerd, is niet-beheerde code. COM-, COM+-, C++-onderdelen, ActiveX-onderdelen en Microsoft Windows-API zijn voorbeelden van niet-beheerde code.
.NET maakt interoperabiliteit mogelijk met onbeheerde code via aanroepende platformservices, de System.Runtime.InteropServices naamruimte, C++ interoperabiliteit en COM-interoperabiliteit (COM-interop).
Platform aanroepen
Platformoproep is een service waarmee beheerde code onbeheerde functies kan aanroepen die zijn geïmplementeerd in DLL's (Dynamic Link Libraries), zoals de Microsoft Windows-API. De functie zoekt en roept een geëxporteerde functie aan en roept de argumenten ervan (gehele getallen, tekenreeksen, matrices, structuren, enzovoort) waar nodig aan over de interoperatiegrens.
Zie Onbeheerde DLL-functies gebruiken en Platform-aanroepen gebruiken om een WAV-bestand af te spelen voor meer informatie.
Opmerking
Common Language Runtime (CLR) beheert de toegang tot systeembronnen. Het aanroepen van niet-beheerde code buiten de CLR omzeilt dit beveiligingsmechanisme en vormt daarom een beveiligingsrisico. Onbeheerde code kan bijvoorbeeld resources in onbeheerde code rechtstreeks aanroepen, waardoor CLR-beveiligingsmechanismen worden overgeslagen. Zie Beveiliging in .NET voor meer informatie.
C++ Interop
U kunt C++-interop, ook wel bekend als It Just Works (IJW), gebruiken om een systeemeigen C++-klasse te verpakken. Met C++-interoperabiliteit kan code geschreven in C# of een andere .NET-taal, toegang krijgen. U schrijft C++-code om een systeemeigen DLL- of COM-onderdeel te verpakken. In tegenstelling tot andere .NET-talen biedt Visual C++ interoperabiliteitsondersteuning waarmee beheerde en onbeheerde code in dezelfde toepassing en zelfs in hetzelfde bestand mogelijk is. Vervolgens bouwt u de C++-code met behulp van de /clr-compilerswitch om een beheerde assembly te produceren. Ten slotte voegt u een verwijzing toe naar de assembly in uw C#-project en gebruikt u de verpakte objecten, net zoals u andere beheerde klassen zou gebruiken.
COM-onderdelen beschikbaar maken voor C#
U kunt een COM-onderdeel van een C#-project gebruiken. De algemene stappen zijn als volgt:
- Zoek een COM-onderdeel dat u wilt gebruiken en registreer het. Gebruik regsvr32.exe om een COM-DLL te registreren of op te heffen.
- Voeg een verwijzing toe aan het project naar het COM-onderdeel of de typebibliotheek. Wanneer u de verwijzing toevoegt, gebruikt Visual Studio de Tlbimp.exe (Type Library Importer) die een typebibliotheek als invoer gebruikt om een .NET-interoperabiliteitsassembly uit te voeren. De assembly, ook wel een runtime aanroepbare wrapper (RCW) genoemd, bevat beheerde klassen en interfaces die de COM-klassen en interfaces verpakken die zich in de typebibliotheek bevinden. Visual Studio voegt een verwijzing naar de gegenereerde assembly toe aan het project.
- Maak een exemplaar van een klasse die is gedefinieerd in de RCW. Als u een exemplaar van die klasse maakt, wordt er een exemplaar van het COM-object gemaakt.
- Gebruik het object net zoals u andere beheerde objecten gebruikt. Wanneer het object door de afvalverzameling wordt vrijgemaakt, wordt de instantie van het COM-object ook uit het geheugen vrijgegeven.
Zie COM-onderdelen beschikbaar maken voor .NET Framework voor meer informatie.
C# beschikbaar maken voor COM
COM-clients kunnen C#-typen gebruiken die correct zijn weergegeven. De basisstappen voor het beschikbaar maken van C#-typen zijn als volgt:
- Voeg interoperabiliteitskenmerken toe aan het C#-project. U kunt een assembly COM zichtbaar maken door de eigenschappen van het C#-project te wijzigen. Voor meer informatie, zie het dialoogvenster Assembly-informatie.
- Genereer een COM-typebibliotheek en registreer deze voor COM-gebruik.
U kunt C#-projecteigenschappen wijzigen om de C#-assembly automatisch te registreren voor COM-interop. Visual Studio maakt gebruik van het Regasm.exe (Assembly Registration Tool) met behulp van de
/tlb
opdrachtregelswitch, die een beheerde assembly als invoer gebruikt om een typebibliotheek te genereren. In deze typebibliotheek worden depublic
typen in de assembly beschreven en registervermeldingen toegevoegd, zodat COM-clients beheerde klassen kunnen maken.
Zie .NET Framework-onderdelen beschikbaar maken voor COM - en voorbeeld-COM-klasse voor meer informatie.