UnmanagedCallersOnlyAttribute Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- 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) |