UnmanagedCallersOnlyAttribute Classe

Definição

Qualquer método marcado com UnmanagedCallersOnlyAttribute pode ser chamado diretamente a partir de código nativo. O token de função pode ser carregado para uma variável local usando o operador address-of em C# e passado como callback para um 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
Herança
UnmanagedCallersOnlyAttribute
Atributos

Exemplos

O exemplo seguinte demonstra a passagem de um callback marcado UnmanagedCallersOnlyAttribute para uma função 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);
}

Observações

Os métodos marcados com este atributo têm as seguintes restrições:

  • Tem de ser marcado static.
  • Não deve ser chamado a partir de código gerido.
  • Só deve ter discussões que se fazem bem .
  • Não deve ter parâmetros de tipo genéricos nem estar contido numa classe genérica.

Construtores

Name Description
UnmanagedCallersOnlyAttribute()

Inicializa uma nova UnmanagedCallersOnlyAttribute instância.

Campos

Name Description
CallConvs

Optional. Se for omitido, o runtime usará a convenção padrão de chamada da plataforma.

EntryPoint

Optional. Se for omitido, não é emitida nenhuma exportação nomeada durante a compilação.

Propriedades

Name Description
TypeId

Quando implementado numa classe derivada, obtém um identificador único para esta Attribute.

(Herdado de Attribute)

Métodos

Name Description
Equals(Object)

Devolve um valor que indica se esta instância é igual a um objeto especificado.

(Herdado de Attribute)
GetHashCode()

Devolve o código de hash para esta instância.

(Herdado de Attribute)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsDefaultAttribute()

Quando sobrescrito numa classe derivada, indica se o valor desta instância é o valor padrão para a classe derivada.

(Herdado de Attribute)
Match(Object)

Quando sobrescrito numa classe derivada, devolve um valor que indica se esta instância é igual a um objeto especificado.

(Herdado de Attribute)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a