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'operatore address-of 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 presentano le restrizioni seguenti:

  • Deve essere contrassegnato come static.
  • Non deve essere chiamato dal codice gestito.
  • Deve contenere solo argomenti copiabili da blt.
  • Non deve avere parametri di tipo generico o essere contenuti all'interno di una classe generica.

Costruttori

Nome Descrizione
UnmanagedCallersOnlyAttribute()

Inizializza una nuova istanza di UnmanagedCallersOnlyAttribute.

Campi

Nome Descrizione
CallConvs

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

EntryPoint

Optional. Se omesso, durante la compilazione non viene generata alcuna esportazione denominata.

Proprietà

Nome Descrizione
TypeId

Se implementato in una classe derivata, ottiene un identificatore univoco per questo Attribute.

(Ereditato da Attribute)

Metodi

Nome Descrizione
Equals(Object)

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

(Ereditato da Attribute)
GetHashCode()

Restituisce il codice hash per questa istanza.

(Ereditato da Attribute)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
IsDefaultAttribute()

Quando sottoposto a 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 è uguale a un oggetto specificato.

(Ereditato da Attribute)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a