ManagedToNativeComInteropStubAttribute Klasse

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
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)]
public sealed class ManagedToNativeComInteropStubAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=false, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(false)]
public sealed class ManagedToNativeComInteropStubAttribute : Attribute
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)>]
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

Mit diesem Attribut können Interop-Entwickler, die über das Marshalling von Wissen verfügen, und die innere Funktionsweise von Interop-aufrufen folgende Aktionen ausführen:This attribute enables interop developers who have knowledge about marshaling and the inner workings of interop calls to do the following:

  • Nutzen Sie angepasste Interop-stubvorgänge zur Buildzeit anstelle der Laufzeit.Take advantage of customized interop stubs at build time instead of run time.

  • Debuggen Sie angepasste Interop-stubvorgänge.Debug customized interop stubs.

  • Stellen Sie Marshallingfunktionen innerhalb eines Stubs bereit, den die Laufzeit nicht bereitstellt.Provide marshaling capabilities within a stub that the runtime does not provide.

  • Bereitstellen von benutzerspezifischen Methoden dispatchfunktionen.Provide user-specific method dispatch capabilities.

Sie wenden das-Attribut auf eine Methode in einer Schnittstelle an, um eine entsprechende Stub-Methode für ein verwaltetes COM-Interop anzugeben.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 zur Laufzeit gefunden wird, generiert das Common Language Runtime nicht dynamisch einen Interop-Stub.If this attribute is encountered during run time, the common language runtime does not dynamically generate an interop stub. Stattdessen wird der benutzerdefinierte Stub aufgerufen, der zum Zeitpunkt der Erstellung erstellt wurde.Instead, it invokes the custom stub that was created at build time.

Das- ManagedToNativeComInteropStubAttribute Attribut weist die folgenden Eigenschaften auf:The ManagedToNativeComInteropStubAttribute attribute has the following characteristics:

  • Das-Attribut kann nur für Methoden von Schnittstellen verwendet werden, die als markiert sind [ComImport] .The attribute can be used only on methods from interfaces that are marked [ComImport]. Wenn das-Attribut auf nicht-Schnittstellentypen 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 in derselben Methode in einer Schnittstelle verwendet werden.The attribute can be used only once on the same method in an interface. Wenn Sie mehrmals verwendet wird, generiert der Compiler einen doppelten Attribut Fehler.If it is used more than once, the compiler generates a duplicated attribute error.

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

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

Überladene Stub-Methoden sind gültig.Overloaded stub methods are valid. Obwohl Sie nur den Typ und den Namen der Stub-Methode angeben, wird die Laufzeit den entsprechenden Stub ermitteln.Although you specify only the type and the name of the stub method, the runtime will discover the corresponding stub. Dies geschieht, indem alle Argumente der Schnittstellen Methode untersucht werden und anschließend ein vollständiger Signatur Abgleich mithilfe eines expliziten Zeigers durchgeführt wird this .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 einer Schnittstelle dieselbe Stub-Methode verwenden. Sie sollten jedoch sorgfältig vorgehen, wenn Sie freigegebene stubdie verwenden.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

Stub-Methoden müssen statisch sein.Stub methods must be static.

Sie können die Laufzeit darüber informieren, dass Sie zur Buildzeit anstelle der Laufzeit einen angepassten Interop-Stub mit folgendem 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);  
}  

Anschließend können Sie den folgenden Code verwenden, um die entsprechende Stub-Methode 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)

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

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

MethodName

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

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.

(Geerbt von Attribute)

Methoden

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.

(Geerbt von Attribute)
GetHashCode()

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

(Geerbt von Attribute)
GetType()

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

(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.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(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.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Geerbt von Attribute)
MemberwiseClone()

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

(Geerbt von Object)
ToString()

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

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

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

(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.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Geerbt von Attribute)
_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).

(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.Provides access to properties and methods exposed by an object.

(Geerbt von Attribute)

Gilt für: