Freigeben über


ManagedToNativeComInteropStubAttribute-Klasse

 

Veröffentlicht: Oktober 2016

Bietet Unterstützung für die Anpassung der Interop-Stubs in verwalteten für COM-Interop-Szenarios.

Namespace:   System.Runtime.InteropServices
Assembly:  mscorlib (in mscorlib.dll)

Vererbungshierarchie

System.Object
  System.Attribute
    System.Runtime.InteropServices.ManagedToNativeComInteropStubAttribute

Syntax

[AttributeUsageAttribute(AttributeTargets.Method, Inherited = false, 
    AllowMultiple = false)]
[ComVisibleAttribute(false)]
public sealed class ManagedToNativeComInteropStubAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Method, Inherited = false, 
    AllowMultiple = false)]
[ComVisibleAttribute(false)]
public ref class ManagedToNativeComInteropStubAttribute sealed : Attribute
[<Sealed>]
[<AttributeUsageAttribute(AttributeTargets.Method, Inherited = false,
    AllowMultiple = false)>]
[<ComVisibleAttribute(false)>]
type ManagedToNativeComInteropStubAttribute = 
    class
        inherit Attribute
    end
<AttributeUsageAttribute(AttributeTargets.Method, Inherited := False,
    AllowMultiple := False)>
<ComVisibleAttribute(False)>
Public NotInheritable Class ManagedToNativeComInteropStubAttribute
    Inherits Attribute

Konstruktoren

Name Beschreibung
System_CAPS_pubmethod ManagedToNativeComInteropStubAttribute(Type, String)

Initialisiert eine neue Instanz der der ManagedToNativeComInteropStubAttribute Klasse mit dem angegebenen Typ und Methode Klassennamen.

Eigenschaften

Name Beschreibung
System_CAPS_pubproperty ClassType

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

System_CAPS_pubproperty MethodName

Ruft den Namen der Stub-Methode.

System_CAPS_pubproperty TypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab.(Geerbt von „Attribute“.)

Methoden

Name Beschreibung
System_CAPS_pubmethod Equals(Object)

Diese API unterstützt die Produkt Infrastruktur und sollte nicht direkt aus dem Code verwendet werden. Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.(Geerbt von „Attribute“.)

System_CAPS_pubmethod GetHashCode()

Gibt den Hashcode für diese Instanz zurück.(Geerbt von „Attribute“.)

System_CAPS_pubmethod GetType()

Ruft den Type der aktuellen Instanz ab.(Geerbt von „Object“.)

System_CAPS_pubmethod 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“.)

System_CAPS_pubmethod Match(Object)

Ruft beim Überschreiben in einer abgeleiteten Klasse gibt einen Wert, der angibt, ob diese Instanz gleich ein angegebenen Objekt ist.(Geerbt von „Attribute“.)

System_CAPS_pubmethod ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.(Geerbt von „Object“.)

Explizite Schnittstellenimplementierungen

Name Beschreibung
System_CAPS_pubinterfaceSystem_CAPS_privmethod _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.(Geerbt von „Attribute“.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod _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“.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod _Attribute.GetTypeInfoCount(UInt32)

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

System_CAPS_pubinterfaceSystem_CAPS_privmethod _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“.)

Hinweise

Dieses Attribut ermöglicht es Interop-Entwickler, die Kenntnisse zu marshallen und der internen Funktionsweise von Interop-Aufrufe für Folgendes verfügen:

  • Nutzen Sie benutzerdefinierte Interop-Stubs zur Buildzeit statt zur Laufzeit.

  • Debuggen Sie benutzerdefinierte Interop-Stubs.

  • Bieten Sie Marshalling innerhalb eines Stubs, das die Laufzeit nicht bereitstellt.

  • Bieten Sie benutzerspezifische Dispatch-Funktionen.

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

Wenn dieses Attribut während der Laufzeit auftritt, wird die common Language Runtime keine dynamisch eine Interop-Stub generiert. Stattdessen wird den benutzerdefinierten Stub, der zur Buildzeit erstellt wurde aufgerufen.

Die ManagedToNativeComInteropStubAttribute Attribut weist folgende Merkmale auf:

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

  • Das Attribut kann nur einmal für die gleiche Methode in einer Schnittstelle verwendet werden. Wenn sie mehr als einmal verwendet wird, generiert der Compiler einen doppelt vorhandenen Fehler.

  • Das Attribut ist von einer Basisschnittstelle nicht vererbbar. Abgeleitete Schnittstellen müssen das Attribut explizit zuweisen.

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

Überladene Stubmethoden sind gültig. Obwohl Sie nur den Typ und den Namen der Stubmethode angeben, ermittelt die Laufzeit den entsprechenden Stub. Dazu werden alle Argumente für die Schnittstellenmethode untersucht und eine vollständige Übereinstimmung mit einem expliziten Signatur this Zeiger.

Es ist auch möglich, dass mehrere Methoden in einer Schnittstelle die gleiche Stubmethode verwenden; Allerdings sollten Sie vorsichtig, wenn Sie freigegebene Stubs verwenden.

Hinweis

Stubmethoden müssen statisch sein.

Darüber informiert die Laufzeit, um einen benutzerdefinierten Interop-Stub zur Buildzeit statt zur Laufzeit durch den folgenden C#-Code verwenden:

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

Klicken Sie dann können den folgenden Code Sie die entsprechende Stubmethode deklarieren:

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

Versionsinformationen

.NET Framework
Verfügbar seit 4.0

Threadsicherheit

Alle öffentlichen statischen Member ( Shared in Visual Basic) dieses Typs sind threadsicher. Die Threadsicherheit für Instanzmember ist nicht garantiert.

Siehe auch

System.Runtime.InteropServices-Namespace

Zurück zum Anfang