Teilen über


ManagedToNativeComInteropStubAttribute Klasse

Definition

Unterstützt die Benutzeranpassung von Interop-Stubs in für COM verwalteten Interopszenarios.

public ref class ManagedToNativeComInteropStubAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=false, Inherited=false)]
public sealed class ManagedToNativeComInteropStubAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)]
public sealed class ManagedToNativeComInteropStubAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=false, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(false)]
public sealed class ManagedToNativeComInteropStubAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=false, Inherited=false)>]
type ManagedToNativeComInteropStubAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)>]
type ManagedToNativeComInteropStubAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=false, Inherited=false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
type ManagedToNativeComInteropStubAttribute = class
    inherit Attribute
Public NotInheritable Class ManagedToNativeComInteropStubAttribute
Inherits Attribute
Vererbung
ManagedToNativeComInteropStubAttribute
Attribute

Hinweise

Dieses Attribut ermöglicht Es Interop-Entwicklern, die über Kenntnisse über Marshalling und die innere Funktionsweise von Interop-Aufrufen verfügen, Folgendes zu tun:

  • Nutzen Sie benutzerdefinierte Interop-Stubs zur Buildzeit anstelle der Laufzeit.

  • Debuggen sie angepasste Interop-Stubs.

  • Stellen Sie Marshallfunktionen innerhalb eines Stubs bereit, die von der Runtime nicht bereitgestellt werden.

  • Stellen Sie benutzerspezifische Methodenverteilungsfunktionen bereit.

Sie wenden das Attribut auf eine Methode in einer Schnittstelle an, um eine entsprechende Stubmethode für die verwaltete zu native COM-Interop anzugeben.

Wenn dieses Attribut während der Laufzeit gefunden wird, generiert die Common Language Runtime nicht dynamisch einen Interop-Stub. Stattdessen ruft er den benutzerdefinierten Stub auf, der zur Buildzeit erstellt wurde.

Das ManagedToNativeComInteropStubAttribute Attribut weist die folgenden Merkmale auf:

  • Das -Attribut kann nur für Methoden von Schnittstellen verwendet werden, die markiert [ComImport]sind. Wenn das Attribut auf Nicht-Schnittstellentypen angewendet wird, wird es von der Runtime ignoriert.

  • Das Attribut kann nur einmal für dieselbe Methode in einer Schnittstelle verwendet werden. Wenn es mehr als einmal verwendet wird, generiert der Compiler einen Fehler beim duplizierten Attribut.

  • Das Attribut kann nicht von einer Basisschnittstelle vererbt werden. Abgeleitete Schnittstellen müssen das Attribut explizit zuweisen.

  • Die Assembly, die die attributierte Methode enthält, muss auch den angepassten Stub enthalten.

Überladene Stubmethoden sind gültig. Obwohl Sie nur den Typ und den Namen der Stubmethode angeben, ermittelt die Runtime den entsprechenden Stub. Hierzu werden alle Argumente für die Schnittstellenmethode untersucht und dann einen vollständigen Signaturabgleich mithilfe eines expliziten Zeigers this durchgeführt.

Es ist auch möglich, dass mehrere Methoden in einer Schnittstelle dieselbe Stubmethode verwenden. Sie sollten jedoch vorsichtig sein, wenn Sie freigegebene Stubs verwenden.

Hinweis

Stubmethoden müssen statisch sein.

Sie könnten die Runtime darüber informieren, einen benutzerdefinierten Interop-Stub zur Buildzeit anstelle der Laufzeit mit dem folgenden C#-Code zu verwenden:

[ComImport]  
interface IMyInterface  
{  
    [ManagedToNativeComInteropStubAttribute(typeof(TestStubClass),  
              "ForwardTestStub")]  
    void GetString (string arg);  
}  

Anschließend können Sie den folgenden Code verwenden, um die entsprechende Stubmethode zu deklarieren:

class TestStubClass  
{  
    internal static void ForwardTestStub(IMyInterface thisObject,  
             string arg) {…}  
}  

Konstruktoren

ManagedToNativeComInteropStubAttribute(Type, String)

Initialisiert eine neue Instanz der ManagedToNativeComInteropStubAttribute-Klasse unter Verwendung des angegebenen Klassentyps und Methodennamens.

Eigenschaften

ClassType

Ruft die Klasse ab, die die erforderliche Stub-Methode enthält.

MethodName

Ruft den Namen der Stub-Methode ab.

TypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab.

(Geerbt von Attribute)

Methoden

Equals(Object)

Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.

(Geerbt von Attribute)
GetHashCode()

Gibt den Hashcode für diese Instanz zurück.

(Geerbt von Attribute)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
IsDefaultAttribute()

Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist.

(Geerbt von Attribute)
Match(Object)

Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht.

(Geerbt von Attribute)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.

(Geerbt von Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können.

(Geerbt von Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).

(Geerbt von Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit.

(Geerbt von Attribute)

Gilt für: