Teilen über


UnmanagedCallersOnlyAttribute Klasse

Definition

Jede Methode, die mit UnmanagedCallersOnlyAttribute gekennzeichnet ist, kann direkt aus nativem Code aufgerufen werden. Das Funktionstoken kann mithilfe des address-of-Operators in C# in eine lokale Variable geladen und als Rückruf an eine native Methode übermittelt werden.

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

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie ein Rückruf an eine systemeigene Funktion übergeben wird UnmanagedCallersOnlyAttribute .

[DllImport("NativeLibrary")]
internal static extern unsafe void NativeFunctionWithCallback(delegate* unmanaged[Cdecl]<int, int> callback);

[UnmanagedCallersOnly(CallConvs = new[] { typeof(CallConvCdecl) })]
private static int DoubleInt(int i) => i * 2;

public static unsafe void PassCallbackToNativeFunction()
{
    NativeFunctionWithCallback(&DoubleInt);
}

Hinweise

Methoden, die mit diesem Attribut gekennzeichnet sind, weisen die folgenden Einschränkungen auf:

  • Muss gekennzeichnet staticsein.
  • Darf nicht aus verwaltetem Code aufgerufen werden.
  • Darf nur über blittbare Argumente verfügen.
  • Darf keine generischen Typparameter aufweisen oder in einer generischen Klasse enthalten sein.

Konstruktoren

UnmanagedCallersOnlyAttribute()

Initialisiert eine neue Instanz von UnmanagedCallersOnlyAttribute.

Felder

CallConvs

Dies ist optional. Wenn nicht angegeben, verwendet die Runtime die Standardkonvention für Plattformaufrufe.

EntryPoint

Dies ist optional. Wenn keine Angabe erfolgt, wird während der Kompilierung kein benannter Export ausgegeben.

Eigenschaften

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)

Gilt für: