Anwenden von Interop-Attributen

Der System.Runtime.InteropServices-Namespace stellt drei Kategorien von Interop-spezifischen Attributen zur Verfügung: Attribute, die Sie zur Entwurfszeit anwenden, Attribute, die von COM-Interop-Tools und -APIs während des Konvertierungsprozesses angewendet werden und Attribute, die entweder von Ihnen oder von COM-Interop angewendet werden.

Wenn Sie mit dem Anwenden von Attributen auf verwalteten Code nicht vertraut sind, finden Sie weitere Informationen unter Erweitern von Metadaten mithilfe von Attributen. Wie andere benutzerdefinierte Attribute können Sie die Interop-spezifischen Attribute auf Typen, Methoden, Eigenschaften, Parameter, Felder und andere Elemente anwenden.

Entwurfszeitattribute

Sie können das Ergebnis des Konvertierungsvorgangs von COM-Interop-Tools und -APIs mithilfe von Entwurfszeitattributen anpassen. Die folgende Tabelle beschreibt die Attribute, die Sie auf dem verwalteten Quellcode anwenden können. COM-Interop-Tools wenden möglicherweise auch die in dieser Tabelle beschriebenen Attribute an.

Attribut BESCHREIBUNG
AutomationProxyAttribute Gibt an, ob der Typ mithilfe des Automation-Marshallers oder eines benutzerdefinierten Proxys und Stubs gemarshallt werden soll.
ClassInterfaceAttribute Steuert den Typ der für eine Klasse generierten Schnittstelle.
CoClassAttribute Identifiziert den Klassenbezeichner einer aus einer Typbibliothek importierten Co-Klasse.

Dieses Attribut wird in der Regel von COM-Interop-Tools angewendet.
ComImportAttribute Gibt an, dass die Definition einer Co-Klasse oder -Schnittstelle aus einer COM-Typbibliothek importiert wurde. Die Common Language Runtime verwendet dieses Flag, um zu wissen, wie der Typ aktiviert und gemarshallt wird. Dieses Attribut verhindert, dass der Typ zurück in eine Typbibliothek exportiert wird.

Dieses Attribut wird in der Regel von COM-Interop-Tools angewendet.
ComRegisterFunctionAttribute Gibt an, dass eine Methode aufgerufen werden soll, wenn die Assembly für die Verwendung von COM registriert ist, damit der vom Benutzer geschriebene Code während der Registrierung ausgeführt werden kann.
ComSourceInterfacesAttribute Identifiziert Schnittstellen, die Ereignisquellen für die Klasse sind.

Dieses Attribut wird von COM-Interop-Tools angewendet.
ComUnregisterFunctionAttribute Gibt an, dass eine Methode aufgerufen werden soll, wenn die Assembly nicht in COM registriert ist, damit vom Benutzer erstellter Code während des Prozesses ausgeführt werden kann.
ComVisibleAttribute Macht Typen für COM unsichtbar, wenn der Attributwert FALSE ist. Dieses Attribut kann für eine gesamte Assembly oder einen einzelnen Typ angewendet werden, um die COM-Sichtbarkeit zu steuern. Standardmäßig sind alle verwalteten, öffentlichen Typen angezeigt. Das Attribut ist nicht erforderlich, um sie sichtbar zu machen.
DispIdAttribute Gibt die COM-Dispatch-ID (DISPID) einer Methode oder eines Felds an. Dieses Attribut enthält die DISPID für die Methode, das Feld oder die Eigenschaft, die es beschreibt.

Dieses Attribut wird von COM-Interop-Tools angewendet.
ComDefaultInterfaceAttribute Gibt die Standardschnittstelle für eine in .NET implementierte COM-Klasse an.

Dieses Attribut wird von COM-Interop-Tools angewendet.
FieldOffsetAttribute Gibt die physische Position jedes Felds innerhalb einer Klasse an, wenn StructLayoutAttribute verwendet und LayoutKind auf explizit festgelegt ist.
GuidAttribute Gibt den Globally Unique Identifier (GUID) einer Klasse, Schnittstelle oder einer ganzen Typbibliothek an. Das Format der Zeichenfolge, die an das Attribut übergeben wird, muss ein zulässiges Konstruktorargument für den Typ System.Guid darstellen.

Dieses Attribut wird von COM-Interop-Tools angewendet.
IDispatchImplAttribute Gibt an, welche IDispatch-Schnittstellenimplementierung die Common Language Runtime verwendet, wenn sie duale Schnittstellen und Disp-Schnittstellen für COM verfügbar macht.
InAttribute Gibt an, dass Daten an den Aufrufer gemarshallt werden sollen. Kann zum Zuordnen von Parametern verwendet werden.
InterfaceTypeAttribute Steuert, wie eine verwaltete Schnittstelle für COM-Clients (Dual, IUnknown-abgeleitet oder nur IDispatch) verfügbar gemacht wird.

Dieses Attribut wird von COM-Interop-Tools angewendet.
LCIDConversionAttribute Gibt an, dass eine nicht verwaltete Methodensignatur einen LCID-Parameter erwartet.

Dieses Attribut wird von COM-Interop-Tools angewendet.
MarshalAsAttribute Gibt an, wie die Daten in Feldern oder Parametern zwischen verwaltetem und nicht verwaltetem Code gemarshallt werden sollen. Das Attribut ist immer optional, da jeder Datentyp standardmäßiges Marshallingverhalten aufweist.

Dieses Attribut wird von COM-Interop-Tools angewendet.
OptionalAttribute Gibt an, dass ein Parameter optional ist.

Dieses Attribut wird von COM-Interop-Tools angewendet.
OutAttribute Gibt an, dass die Daten in einem Feld oder Parameter vom aufgerufenen Objekt zurück an den Aufrufer gemarshallt werden müssen.
PreserveSigAttribute Unterdrückt das HRESULT oder die Retval-Signaturtransformation, die in der Regel bei Interop-Aufrufen stattfindet. Das Attribut wirkt sich auf das Marshalling und das Exportieren der Typbibliothek aus.

Dieses Attribut wird von COM-Interop-Tools angewendet.
ProgIdAttribute Hiermit wird die ProgID einer .NET-Klasse angegeben. Kann zum Zuordnen von Klassen verwendet werden.
StructLayoutAttribute Steuert das physische Layout der Felder einer Klasse.

Dieses Attribut wird von COM-Interop-Tools angewendet.

Attribute des Konvertierungstools

Die folgende Tabelle beschreibt die Attribute, die COM-Interop-Tools während des Konvertierungsvorgangs anwenden. Diese Attribute werden nicht zur Entwurfszeit angewendet.

Attribut Beschreibung
ComAliasNameAttribute Gibt den COM-Alias für einen Parameter oder Feldtyp an. Kann verwendet werden, um Parameter und Felder zuzuordnen oder Werte zurückzugeben.
ComConversionLossAttribute Gibt den Informationsverlust zu einer Klasse oder Schnittstelle an, als diese aus einer Typbibliothek in eine Assembly importiert wurden.
ComEventInterfaceAttribute Identifiziert die Quellschnittstelle und die Klasse, die die Methoden der Ereignisschnittstelle implementieren.
ImportedFromTypeLibAttribute Gibt an, dass die Assembly ursprünglich aus einer COM-Typbibliothek importiert wurde. Dieses Attribut enthält die Typdefinition für die Bibliothek von 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 FUNCFLAGS, die ursprünglich für diesen Typ aus der COM-Typbibliothek importiert wurden.
TypeLibVarAttribute Enthält die FUNCFLAGS, die ursprünglich für diese Variable aus der COM-Typbibliothek importiert wurden.

Siehe auch