ManagedToNativeComInteropStubAttribute ManagedToNativeComInteropStubAttribute ManagedToNativeComInteropStubAttribute ManagedToNativeComInteropStubAttribute Class

Definition

Unterstützt die Benutzeranpassung von Interop-Stubs in für COM verwalteten Interopszenarios.Provides support for user customization of interop stubs in managed-to-COM interop scenarios.

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

Hinweise

Mit diesem Attribut können Interop-Entwickler, die über Kenntnisse zu marshallen und die interne Funktionsweise von Interop-Aufrufe an die folgenden Schritte ausführen:This attribute enables interop developers who have knowledge about marshaling and the inner workings of interop calls to do the following:

  • Nutzen von benutzerdefinierten interop-Stubs zum Zeitpunkt der Erstellung nicht zur Laufzeit.Take advantage of customized interop stubs at build time instead of run time.

  • Debuggen von benutzerdefinierten Interop-Stubs.Debug customized interop stubs.

  • Geben Sie Marshalling Funktionen in einen Stub, den die Runtime nicht bereitstellt.Provide marshaling capabilities within a stub that the runtime does not provide.

  • Bieten Sie benutzerspezifische-Methode Dispatch-Funktionen.Provide user-specific method dispatch capabilities.

Sie wenden das Attribut für eine Methode in einer Schnittstelle für verwaltete, systemeigene COM-Interop eine entsprechende Stubmethode an.You apply the attribute on a method in an interface to specify a corresponding stub method for managed-to-native COM interop.

Wenn dieses Attribut während der Laufzeit auftritt, wird die common Language Runtime keine dynamisch einen Interop-Stub generiert.If this attribute is encountered during run time, the common language runtime does not dynamically generate an interop stub. Stattdessen wird Sie von der benutzerdefinierten Stub, der zum Zeitpunkt der Erstellung erstellt wurde.Instead, it invokes the custom stub that was created at build time.

Die ManagedToNativeComInteropStubAttribute Attribut weist folgende Merkmale auf:The ManagedToNativeComInteropStubAttribute attribute has the following characteristics:

  • Das Attribut kann verwendet werden, nur für Methoden von Schnittstellen, die markiert sind [ComImport].The attribute can be used only on methods from interfaces that are marked [ComImport]. Wenn das Attribut auf Nichtschnittstellen-Typen angewendet wird, wird es von der Laufzeit ignoriert.If the attribute is applied to non-interface types, it is ignored by the runtime.

  • Das Attribut kann nur einmal für die gleiche Methode in einer Schnittstelle verwendet werden.The attribute can be used only once on the same method in an interface. Wenn es mehr als einmal verwendet wird, generiert der Compiler einen Fehler doppeltem Attribut aus.If it is used more than once, the compiler generates a duplicated attribute error.

  • Das Attribut kann nicht geerbt werden von einer Basisschnittstelle.The attribute is not inheritable from a base interface. Das Attribut müssen von abgeleitete Schnittstellen explizit zuweisen.Derived interfaces must explicitly assign the attribute.

  • Die Assembly, die die attributierte Methode enthält, muss auch die benutzerdefinierten Stub enthalten.The assembly that contains the attributed method must also contain the customized stub.

Überladene Stubmethoden sind gültig.Overloaded stub methods are valid. Obwohl Sie nur den Typ und den Namen der Stub-Methode angeben, werden die Laufzeit den entsprechenden Stub ermittelt.Although you specify only the type and the name of the stub method, the runtime will discover the corresponding stub. Dies geschieht durch alle Argumente für die Schnittstellenmethode untersucht und dann mithilfe eines expliziten Übereinstimmung der vollständigen Signatur this Zeiger.It does this by examining all the arguments on the interface method, and then performing full signature matching by using an explicit this pointer.

Es ist auch möglich, dass mehrere Methoden in eine Schnittstelle für die gleiche Stubmethode verwenden; Allerdings sollten Sie vorsichtig bei der Verwendung von freigegebenen Stubs.It is also possible for multiple methods in an interface to share the same stub method; however, you should be careful when you use shared stubs.

Hinweis

Stubmethoden müssen statisch sein.Stub methods must be static.

Darüber informiert die Laufzeit, um einen benutzerdefinierten interop-Stubs zum Zeitpunkt der Erstellung nicht zur Laufzeit durch den folgenden C#-Code verwenden:You could inform the runtime to use a customized interop stub at build time instead of run time with the following C# code:

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

Sie konnte klicken Sie dann den folgenden Code verwenden, um die entsprechende Stubmethode zu deklarieren:You could then use the following code to declare the corresponding stub method:

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

Konstruktoren

ManagedToNativeComInteropStubAttribute(Type, String) ManagedToNativeComInteropStubAttribute(Type, String) ManagedToNativeComInteropStubAttribute(Type, String) ManagedToNativeComInteropStubAttribute(Type, String)

Initialisiert eine neue Instanz der ManagedToNativeComInteropStubAttribute-Klasse unter Verwendung des angegebenen Klassentyps und Methodennamens.Initializes a new instance of the ManagedToNativeComInteropStubAttribute class with the specified class type and method name.

Eigenschaften

ClassType ClassType ClassType ClassType

Ruft die Klasse ab, die die erforderliche Stub-Methode enthält.Gets the class that contains the required stub method.

MethodName MethodName MethodName MethodName

Ruft den Namen der Stub-Methode ab.Gets the name of the stub method.

TypeId TypeId TypeId TypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)

Methoden

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Gibt den Hashcode für diese Instanz zurück.Returns the hash code for this instance.

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute()

Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) Match(Object)

Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Inherited from Object)

Explizite Schnittstellenimplementierungen

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

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _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.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Gilt für: