UnmanagedCallersOnlyAttribute Třída

Definice

Libovolnou metodu označenou UnmanagedCallersOnlyAttribute lze volat přímo z nativního kódu. Token funkce lze načíst do místní proměnné pomocí operátoru adresy v jazyce C# a předat ho jako zpětné volání nativní metodě.

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
Dědičnost
UnmanagedCallersOnlyAttribute
Atributy

Příklady

Následující příklad ukazuje předání zpětného volání označeného UnmanagedCallersOnlyAttribute nativní funkci.

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

Poznámky

Metody označené tímto atributem mají následující omezení:

  • Musí být označen .static
  • Nesmí být volána ze spravovaného kódu.
  • Musí obsahovat pouze blitelné argumenty.
  • Nesmí obsahovat parametry obecného typu nebo být obsaženy v obecné třídě.

Konstruktory

Name Description
UnmanagedCallersOnlyAttribute()

Inicializuje novou UnmanagedCallersOnlyAttribute instanci.

Pole

Name Description
CallConvs

Optional. Pokud tento parametr vynecháte, modul runtime použije výchozí konvenci volání platformy.

EntryPoint

Optional. Pokud tento parametr vynecháte, během kompilace se nevygeneruje žádný pojmenovaný export.

Vlastnosti

Name Description
TypeId

Při implementaci v odvozené třídě získá jedinečný identifikátor pro tento Attribute.

(Zděděno od Attribute)

Metody

Name Description
Equals(Object)

Vrátí hodnotu, která určuje, zda je tato instance rovna zadanému objektu.

(Zděděno od Attribute)
GetHashCode()

Vrátí kód hash pro tuto instanci.

(Zděděno od Attribute)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
IsDefaultAttribute()

Při přepsání v odvozené třídě určuje, zda hodnota této instance je výchozí hodnotou pro odvozenou třídu.

(Zděděno od Attribute)
Match(Object)

Při přepsání v odvozené třídě vrátí hodnotu, která určuje, zda se tato instance rovná zadanému objektu.

(Zděděno od Attribute)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro