UnmanagedCallersOnlyAttribute Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
- 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) |