Condividi tramite


UnmanagedCallersOnlyAttribute Classe

Definizione

Qualsiasi metodo contrassegnato con UnmanagedCallersOnlyAttribute può essere chiamato direttamente dal codice nativo. Il token di funzione può essere caricato in una variabile locale usando l'indirizzo dell'operatore in C# e passato come callback a un metodo nativo.

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
Ereditarietà
UnmanagedCallersOnlyAttribute
Attributi

Esempio

Nell'esempio seguente viene illustrato il passaggio di un callback contrassegnato UnmanagedCallersOnlyAttribute a una funzione nativa.

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

Commenti

I metodi contrassegnati con questo attributo hanno le restrizioni seguenti:

  • Deve essere contrassegnato static.
  • Non deve essere chiamato dal codice gestito.
  • Deve avere solo argomenti blittable .
  • Non deve avere parametri di tipo generici o essere contenuti all'interno di una classe generica.

Costruttori

UnmanagedCallersOnlyAttribute()

Inizializza una nuova istanza di UnmanagedCallersOnlyAttribute.

Campi

CallConvs

facoltativo. Se omesso, il runtime userà la convenzione di chiamata alla piattaforma predefinita.

EntryPoint

facoltativo. Se omesso, durante la compilazione non viene creata alcuna esportazione denominata.

Proprietà

TypeId

Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute.

(Ereditato da Attribute)

Metodi

Equals(Object)

Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.

(Ereditato da Attribute)
GetHashCode()

Restituisce il codice hash per l'istanza.

(Ereditato da Attribute)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
IsDefaultAttribute()

In caso di override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata.

(Ereditato da Attribute)
Match(Object)

Quando è sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato.

(Ereditato da Attribute)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a