Delen via


Type-gelijkwaardigheid en ingesloten interoperabiliteitstypen

Vanaf .NET Framework 4 ondersteunt de algemene taalruntime het insluiten van typegegevens voor COM-typen rechtstreeks in beheerde assembly's, in plaats van dat de beheerde assembly's typegegevens moeten verkrijgen voor COM-typen uit interopassembly's. Omdat de ingesloten typegegevens alleen de typen en leden bevatten die daadwerkelijk worden gebruikt door een beheerde assembly, kunnen twee beheerde assembly's zeer verschillende weergaven van hetzelfde COM-type hebben. Elke beheerde assembly heeft een ander Type object om zijn voorstelling van het COM-type te vertegenwoordigen. De Common Language Runtime ondersteunt equivalentie van typen tussen de verschillende weergaven van interfaces, structuren, opsommingen en gedelegeerden.

Type-gelijkwaardigheid betekent dat een COM-object dat van de ene beheerde assembly naar een andere wordt doorgegeven, kan worden omgezet in het juiste beheerde type in de ontvangende assembly.

Opmerking

Type-equivalentie en ingesloten interoperabiliteitstypen vereenvoudigen de implementatie van toepassingen en invoegtoepassingen die gebruikmaken van COM-onderdelen, omdat het niet nodig is om interop-assembly's met de toepassingen te implementeren. Ontwikkelaars van gedeelde COM-onderdelen moeten nog steeds primaire interopassembly's (PIA's) maken als ze willen dat hun onderdelen worden gebruikt door eerdere versies van .NET Framework.

Gelijkwaardigheid van type

Gelijkwaardigheid van COM-typen wordt ondersteund voor interfaces, structuren, opsommingen en gemachtigden. COM-typen komen in aanmerking als gelijkwaardig als alle volgende waar zijn:

  • De typen zijn ofwel beide interfaces, beide structuren, beide opsommingen, of beide delegaten.

  • De typen hebben dezelfde identiteit, zoals beschreven in de volgende sectie.

  • Beide typen zijn geschikt voor typegelijkwaardigheid, zoals beschreven in de Markering van COM-typen voor typegelijkwaardigheid.

Type-identiteit

Twee typen worden als hetzelfde beschouwd wanneer hun scopes en identiteiten overeenkomen, met andere woorden, als ze elk het TypeIdentifierAttribute kenmerk hebben en de twee kenmerken overeenkomende Scope en Identifier eigenschappen hebben. De vergelijking voor Scope is niet hoofdlettergevoelig.

Als een type het TypeIdentifierAttribute kenmerk niet heeft of als het een TypeIdentifierAttribute kenmerk heeft dat geen bereik en id opgeeft, kan het type nog steeds als volgt beschouwd worden voor gelijkwaardigheid:

COM-typen markeren voor gelijkwaardigheid van typen

U kunt een type op twee manieren markeren als in aanmerking komen voor type-equivalentie:

  • Pas het TypeIdentifierAttribute kenmerk toe op het type.

  • Maak van het type een COM-importtype. Een interface is een COM-importtype als deze het ComImportAttribute kenmerk heeft. Een interface, structuur, opsomming of gemachtigde is een COM-importtype als de assembly waarin deze is gedefinieerd, het ImportedFromTypeLibAttribute kenmerk heeft.

Zie ook