Udostępnij za pośrednictwem


UnmanagedCallersOnlyAttribute Klasa

Definicja

Dowolna metoda oznaczona za pomocą UnmanagedCallersOnlyAttribute może być wywoływana bezpośrednio z kodu natywnego. Token funkcji można załadować do zmiennej lokalnej przy użyciu operatora address-of w języku C# i przekazany jako wywołanie zwrotne do metody natywnej.

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
Dziedziczenie
UnmanagedCallersOnlyAttribute
Atrybuty

Przykłady

W poniższym przykładzie pokazano przekazywanie wywołania zwrotnego oznaczonego UnmanagedCallersOnlyAttribute do funkcji natywnej.

[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);
}

Uwagi

Metody oznaczone tym atrybutem mają następujące ograniczenia:

  • Musi być oznaczony jako static.
  • Nie może być wywoływany z kodu zarządzanego.
  • Musi mieć tylko argumenty tabeli blittable .
  • Nie może zawierać parametrów typu ogólnego ani być zawarte w klasie ogólnej.

Konstruktory

UnmanagedCallersOnlyAttribute()

Inicjuje nowe UnmanagedCallersOnlyAttribute wystąpienie.

Pola

CallConvs

Opcjonalny. W przypadku pominięcia środowisko uruchomieniowe będzie używać domyślnej konwencji wywoływania platformy.

EntryPoint

Opcjonalny. Jeśli pominięto, podczas kompilacji nie jest emitowany żaden nazwany eksport.

Właściwości

TypeId

Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego elementu Attribute.

(Odziedziczone po Attribute)

Metody

Equals(Object)

Zwraca wartość wskazującą, czy to wystąpienie jest równe podanemu obiektowi.

(Odziedziczone po Attribute)
GetHashCode()

Zwraca wartość skrótu dla tego wystąpienia.

(Odziedziczone po Attribute)
GetType()

Type Pobiera bieżące wystąpienie.

(Odziedziczone po Object)
IsDefaultAttribute()

W przypadku zastąpienia w klasie pochodnej wskazuje, czy wartość tego wystąpienia jest wartością domyślną klasy pochodnej.

(Odziedziczone po Attribute)
Match(Object)

W przypadku zastąpienia w klasie pochodnej zwraca wartość wskazującą, czy to wystąpienie jest równe określonemu obiektowi.

(Odziedziczone po Attribute)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy