Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Från och med .NET Framework 4 stöder den vanliga språkkörningen inbäddningstypinformation för COM-typer direkt i hanterade sammansättningar, i stället för att kräva att de hanterade sammansättningarna hämtar typinformation för COM-typer från interop-sammansättningar. Eftersom informationen om den inbäddade typen endast innehåller de typer och medlemmar som faktiskt används av en hanterad sammansättning kan två hanterade sammansättningar ha mycket olika vyer av samma COM-typ. Varje hanterad sammansättning har ett annat Type objekt som representerar dess vy av COM-typen. Den gemensamma runtime-miljön stöder typekvivalens mellan dessa olika vyer för gränssnitt, strukturer, uppräkningar och delegeringar.
Typjämvikt innebär att ett COM-objekt som skickas från en hanterad sammansättning till en annan kan gjutas till lämplig hanterad typ i den mottagande sammansättningen.
Anmärkning
Typjämförelse och inbäddade interoptyper förenklar distributionen av program och tillägg som använder COM-komponenter, eftersom det inte är nödvändigt att distribuera interop-sammansättningar med programmen. Utvecklare av delade COM-komponenter måste fortfarande skapa primära interop-sammansättningar (PIA) om de vill att deras komponenter ska användas av tidigare versioner av .NET Framework.
Typjämvikt
Likvärdighet av COM-typer stöds för gränssnitt, strukturer, uppräkningar och ombud. COM-typerna är likvärdiga om alla följande är sanna:
Typerna är båda gränssnitten, båda strukturerna, båda uppräkningarna, eller båda delegaterna.
Typerna har samma identitet, enligt beskrivningen i nästa avsnitt.
Båda typerna är berättigade till typjämvikt, enligt beskrivningen i avsnittet Märkning av COM-typer för typjämvikt .
Typidentitet
Två typer anses ha samma identitet när deras omfattningar och identiteter matchar; med andra ord, om de båda har TypeIdentifierAttribute-attributet och de två attributen har matchande Scope- och Identifier-egenskaper. Jämförelsen för Scope är inte skiftlägeskänslig.
Om en typ inte har TypeIdentifierAttribute attributet, eller om den har ett TypeIdentifierAttribute attribut som inte anger omfång och identifierare, kan typen fortfarande betraktas som likvärdig enligt följande:
För gränssnitt används värdet GuidAttribute för i stället för TypeIdentifierAttribute.Scope egenskapen, och Type.FullName egenskapen (dvs. typnamnet, inklusive namnområdet) används i stället för TypeIdentifierAttribute.Identifier egenskapen.
För strukturer, uppräkningar och delegeringar används den innehållande sammansättningen i stället för den GuidAttribute egenskapen och den Scope egenskapen används i stället för egenskapen Type.FullName.
Markera COM-typer för typjämlikhet
Du kan markera en typ som berättigad till typjämvikt på två sätt:
TypeIdentifierAttribute Använd attributet för typen.
Gör typen till en COM-importtyp. Ett gränssnitt är en COM-importtyp om det har attributet ComImportAttribute . Ett gränssnitt, en struktur, en uppräkning eller ett ombud är en COM-importtyp om sammansättningen där den definieras har ImportedFromTypeLibAttribute attributet.