Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ab .NET Framework 4 unterstützt die Common Language Runtime das Einbetten von Typinformationen für COM-Typen direkt in verwaltete Assemblys, anstatt dass die verwalteten Assemblys Typinformationen für COM-Typen aus Interopassemblys abrufen müssen. Da die eingebetteten Typinformationen nur die Typen und Member enthalten, die tatsächlich von einer verwalteten Assembly verwendet werden, verfügen zwei verwaltete Assemblys möglicherweise über sehr unterschiedliche Ansichten desselben COM-Typs. Jedes verwaltete Assembly hat ein anderes Type Objekt, um seine Ansicht des COM-Typs zu repräsentieren. Die Common Language Runtime unterstützt die Typgleichheit zwischen diesen verschiedenen Ansichten für Schnittstellen, Strukturen, Enumerationen und Delegaten.
Typgleichheit bedeutet, dass ein COM-Objekt, das von einer verwalteten Assembly an eine andere übergeben wird, in den entsprechenden verwalteten Typ in der empfangenden Assembly umgewandelt werden kann.
Hinweis
Typgleichheits- und eingebettete Interoperabilitätstypen vereinfachen die Bereitstellung von Anwendungen und Add-Ins, die COM-Komponenten verwenden, da es nicht erforderlich ist, Interopassemblys mit den Anwendungen bereitzustellen. Entwickler freigegebener COM-Komponenten müssen weiterhin primäre Interopassemblys (PIAs) erstellen, wenn sie möchten, dass ihre Komponenten von früheren Versionen von .NET Framework verwendet werden.
Typäquivalenz
Die Äquivalenz von COM-Typen wird für Schnittstellen, Strukturen, Enumerationen und Delegaten unterstützt. COM-Typen gelten als gleichwertig, wenn alle folgenden Bedingungen erfüllt sind:
Beide Typen sind sowohl Schnittstellen, Strukturen, Enumerationen oder Delegaten.
Die Typen weisen die gleiche Identität auf, wie im nächsten Abschnitt beschrieben.
Beide Typen sind für die Typäquivalenz geeignet, wie im Abschnitt zur Kennzeichnung von COM-Typen für die Typäquivalenz beschrieben.
Typidentität
Zwei Typen gelten als identisch, wenn sich ihre Bereiche und Identitäten decken, das heißt, wenn sie jeweils das TypeIdentifierAttribute Attribut haben und die beiden Attribute die Eigenschaften Scope und Identifier gemeinsam haben. Beim Vergleich für Scope wird die Groß- und Kleinschreibung nicht berücksichtigt.
Wenn ein Typ nicht über das TypeIdentifierAttribute Attribut verfügt oder ein Attribut besitzt TypeIdentifierAttribute , das keinen Bereich und Bezeichner angibt, kann der Typ weiterhin für Äquivalenz wie folgt betrachtet werden:
Bei Schnittstellen wird der Wert der GuidAttribute Eigenschaft anstelle der TypeIdentifierAttribute.Scope Eigenschaft verwendet, und die Type.FullName Eigenschaft (d. h. der Typname, einschließlich des Namespaces), wird anstelle der TypeIdentifierAttribute.Identifier Eigenschaft verwendet.
Bei Strukturen, Enumerationen und Delegaten wird die GuidAttribute der enthaltenden Assembly anstelle der Scope-Eigenschaft verwendet, und die Type.FullName-Eigenschaft wird anstelle der Identifier-Eigenschaft verwendet.
Markieren von COM-Typen für Typäquivalenz
Sie können einen Typ auf zwei Arten als gleichwertig kennzeichnen:
Wenden Sie das TypeIdentifierAttribute Attribut auf den Typ an.
Geben Sie den Typ als COM-Importtyp ein. Eine Schnittstelle ist ein COM-Importtyp, wenn sie über das ComImportAttribute Attribut verfügt. Eine Schnittstelle, Struktur, Enumeration oder Stellvertretung ist ein COM-Importtyp, wenn die Assembly, in der sie definiert ist, über das ImportedFromTypeLibAttribute Attribut verfügt.