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. |