Anwenden von Interop-Attributen

Der System.Runtime.InteropServices-Namespace unterscheidet drei Kategorien von Interop-spezifischen Attributen: Attribute, die Sie während der Entwurfszeit zugewiesen haben, Attribute, die durch COM-Interop-Tools und APIs beim Konvertierungsprozess zugewiesen wurden, sowie Attribute, die entweder von Ihnen oder von COM-Interop zugewiesen wurden.

Weitere Informationen, wie Sie verwaltetem Code Attribute zuweisen können, finden Sie unter Erweitern von Metadaten mithilfe von Attributen. Interop-spezifische Attributen lassen sich Typen, Methoden, Eigenschaften, Parametern, Feldern und anderen Membern in gleicher Weise zuweisen wie andere benutzerdefinierte Attribute.

Entwurfszeitattribute

Zum Anpassen des Ergebnisses des Konvertierungsprozesses, der von COM-Interop-Tools und APIs durchgeführt wird, können Sie Entwurfszeitattribute verwenden. In der folgenden Tabelle werden die Attribute beschrieben, die Sie dem verwalteten Quellcode zuweisen können. Die hier beschriebenen Attribute können gegebenenfalls auch von COM-Interop-Tools zugewiesen werden.

Attribut

Beschreibung

AutomationProxyAttribute

Gibt an, ob der Typ mit dem Automatisierungsmarshaller oder mit benutzerdefiniertem Proxy und Stub gemarshallt werden soll.

ClassInterfaceAttribute

Steuert den Schnittstellentyp, der für eine Klasse generiert wird.

CoClassAttribute

Bezeichnet die CLSID der ursprünglichen Co-Klasse, die aus einer Typbibliothek importiert wurde.

Dieses Attribut wird üblicherweise von COM-Interop-Tools angewendet.

ComImportAttribute

Gibt an, dass eine Co-Klassen- oder Schnittstellendefinition aus einer COM-Typbibliothek importiert wurde. Dieses von Common Language Runtime verwendete Flag zeigt an, wie der Typ aktiviert und gemarshallt wird. Dieses Attribut verhindert, dass der Typ zurück in eine Typbibliothek exportiert wird.

Dieses Attribut wird üblicherweise von COM-Interop-Tools angewendet.

ComRegisterFunctionAttribute

Zeigt an, dass eine Methode aufgerufen werden soll, wenn die Assembly für die Verwendung von COM registriert wird. Dadurch kann durch den Benutzer erstellter Code während der Registrierung ausgeführt werden.

ComSourceInterfacesAttribute

Bezeichnet Schnittstellen, welche Ereignisquellen für die Klasse darstellen.

Dieses Attribut kann von COM-Interop-Tools zugewiesen werden.

ComUnregisterFunctionAttribute

Zeigt an, dass eine Methode aufgerufen werden soll, wenn die COM-Registrierung der Assembly aufgehoben wird. Dadurch kann durch den Benutzer erstellter Code während des Prozesses ausgeführt werden.

ComVisibleAttribute

Macht Typen für COM unsichtbar, wenn der Attributwert false lautet. Dieses Attribut zum Steuern der Sichtbarkeit in COM kann einem einzelnen Typ oder einer ganzen Assembly zugewiesen werden. Standardmäßig sind alle verwalteten, öffentlichen Typen sichtbar, d. h. das Attribut ist zur Anzeige nicht erforderlich.

DispIdAttribute

Bestimmt den COM-Dispatchbezeichner (DISPID, Dispatch Identifier) für eine Methode oder ein Feld. Dieses Attribut enthält den DISPID für die beschriebene Methode, das Feld oder die Eigenschaft.

Dieses Attribut kann von COM-Interop-Tools zugewiesen werden.

FieldOffsetAttribute

Bestimmt die physische Position der einzelnen Felder in einer Klasse (wird zusammen mit StructLayoutAttribute verwendet, wenn unter LayoutKind die Option Explicit eingestellt ist).

GuidAttribute

Gibt den globalen eindeutigen Bezeichner (GUID, Globally Unique Identifier) einer Klasse, einer Schnittstelle oder einer ganzen Typbibliothek an. Die an das Attribut übergebene Zeichenfolge muss in einem Format vorliegen, das einem zulässigen Konstruktorargument für den Typ System.Guid entspricht.

Dieses Attribut kann von COM-Interop-Tools zugewiesen werden.

IDispatchImpAttribute

Gibt an, welche IDispatch-Schnittstellenimplementierung von Common Language Runtime verwendet wird, um duale oder Dispatch-Schnittstellen für COM verfügbar zu machen.

InAttribute

Gibt an, dass die Daten in den Aufrufer gemarshallt werden sollen. Kann zum Festlegen von Attributen für Parameter verwendet werden.

InterfaceTypeAttribute

Bestimmt, wie eine verwaltete Schnittstelle für COM-Clients verfügbar gemacht wird (Dual, abgeleitet von IUnknown oder nur IDispatch).

Dieses Attribut kann von COM-Interop-Tools zugewiesen werden.

LCIDConversionAttribute

Zeigt an, dass für eine nicht verwaltete Methodensignatur ein LCID-Parameter erwartet wird.

Dieses Attribut kann von COM-Interop-Tools zugewiesen werden.

MarshalAsAttribute

Bestimmt, wie die Daten in Feldern oder Parametern zwischen verwaltetem und nicht verwaltetem Code gemarshallt werden. Dieses Attribut ist stets optional, weil jeder Datentyp ein standardmäßiges Marshallverhalten aufweist.

Dieses Attribut kann von COM-Interop-Tools zugewiesen werden.

OptionalAttribute

Gibt an, dass ein Parameter optional ist.

Dieses Attribut kann von COM-Interop-Tools zugewiesen werden.

OutAttribute

Gibt an, dass die Daten in einem Feld oder Parameter von einem aufgerufenen Objekt zurück an dessen Aufrufer gemarshallt werden sollen.

PreserveSigAttribute

Unterdrückt die Transformation einer HRESULT- oder retval-Signatur, die normalerweise während Aufrufen zur Interoperation durchgeführt wird. Das Attribut wirkt sich sowohl beim Marshallen als auch beim Exportieren der Typbibliothek aus.

Dieses Attribut kann von COM-Interop-Tools zugewiesen werden.

ProgIdAttribute

Bestimmt die ProgID einer .NET Framework-Klasse. Kann zum Festlegen von Attributen für Klassen verwendet werden.

StructLayoutAttribute

Steuert das physische Layout der Felder einer Klasse.

Dieses Attribut kann von COM-Interop-Tools zugewiesen werden.

Attribute des Konvertierungstools

In der folgenden Tabelle werden Attribute beschrieben, die COM-Interop-Tools beim Konvertierungsprozess anwenden. Diese Attribute können nicht während der Entwurfszeit zugewiesen werden.

Attribut

Beschreibung

ComAliasNameAttribute

Gibt den COM-Alias für einen Parameter oder Feldtyp an. Kann auf Attributparameter, Felder oder Rückgabewerte angewendet werden.

ComConversionLossAttribute

Gibt an, dass Klassen- oder Schnittstelleninformationen beim Import aus einer Typbibliothek in eine Assembly verloren gegangen sind.

ComEventInterfaceAttribute

Bezeichnet die Quellschnittstelle und die Klasse, die die Methoden der Ereignisschnittstelle implementiert.

ImportedFromTypeLibAttribute

Gibt an, dass die Assembly ursprünglich aus einer COM-Typbibliothek importiert wurde. Dieses Attribut enthält die Typbibliotheksdefinition der ursprünglichen Typbibliothek.

TypeLibFuncAttribute

Enthält die FUNCFLAGS, die ursprünglich für diese Funktion aus der COM-Typbibliothek importiert wurden.

TypeLibTypeAttribute

Enthält die TYPEFLAGS, die ursprünglich für diesen Typ aus der COM-Typbibliothek importiert wurden.

TypeLibVarAttribute

Enthält die VARFLAGS, die ursprünglich für diese Variable aus der COM-Typbibliothek importiert wurden.

Siehe auch

Referenz

System.Runtime.InteropServices

Konzepte

Verfügbarmachen von .NET Framework-Komponenten in COM

Erweitern von Metadaten mithilfe von Attributen

Qualifizieren von .NET-Typen für die Interoperation

Verpacken einer Assembly für COM