UnmanagedCallersOnlyAttribute Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
- 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) |