Compartir vía


UnmanagedCallersOnlyAttribute Clase

Definición

Se puede llamar directamente a cualquier método marcado con UnmanagedCallersOnlyAttribute desde código nativo. El token de función se puede cargar en una variable local mediante el operador address-of en C# y pasarse como devolución de llamada a un método 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
Herencia
UnmanagedCallersOnlyAttribute
Atributos

Ejemplos

En el ejemplo siguiente se muestra cómo pasar una devolución de llamada marcada UnmanagedCallersOnlyAttribute a una función 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);
}

Comentarios

Los métodos marcados con este atributo tienen las restricciones siguientes:

  • Debe marcarse como static.
  • No se debe llamar desde código administrado.
  • Solo debe tener argumentos que se pueden transferir en bloque .
  • No debe tener parámetros de tipo genéricos ni estar incluidos en una clase genérica.

Constructores

UnmanagedCallersOnlyAttribute()

Inicializa una nueva instancia de UnmanagedCallersOnlyAttribute.

Campos

CallConvs

Opcional. Si se omite, el tiempo de ejecución usará la convención de llamada de plataforma predeterminada.

EntryPoint

Opcional. Si se omite, no se emite ninguna exportación con nombre durante la compilación.

Propiedades

TypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.

(Heredado de Attribute)

Métodos

Equals(Object)

Devuelve un valor que indica si esta instancia es igual que un objeto especificado.

(Heredado de Attribute)
GetHashCode()

Devuelve el código hash de esta instancia.

(Heredado de Attribute)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
IsDefaultAttribute()

Si se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada.

(Heredado de Attribute)
Match(Object)

Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual a un objeto especificado.

(Heredado de Attribute)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a