UnmanagedCallersOnlyAttribute Класс

Определение

Любой метод, помеченный UnmanagedCallersOnlyAttribute, можно вызывать непосредственно из машинного кода. Маркер функции можно загрузить в локальную переменную с помощью оператора в C# и передать в качестве обратного вызова в собственный метод.

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
Наследование
UnmanagedCallersOnlyAttribute
Атрибуты

Примеры

В следующем примере показано, как передать обратный вызов, помеченный UnmanagedCallersOnlyAttribute в собственную функцию.

[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);
}

Комментарии

Методы, помеченные этим атрибутом, имеют следующие ограничения:

  • Должен быть помечен static.
  • Не следует вызывать из управляемого кода.
  • Должны иметь только аргументы , доступные для перерезки .
  • Не должны содержать параметры универсального типа или содержаться в универсальном классе.

Конструкторы

Имя Описание
UnmanagedCallersOnlyAttribute()

Инициализирует новый экземпляр класса UnmanagedCallersOnlyAttribute.

Поля

Имя Описание
CallConvs

Optional. Если опущено, среда выполнения будет использовать соглашение о вызовах платформы по умолчанию.

EntryPoint

Optional. Если опущено, во время компиляции не создается именованный экспорт.

Свойства

Имя Описание
TypeId

При реализации в производном классе получает уникальный идентификатор для этого Attribute.

(Унаследовано от Attribute)

Методы

Имя Описание
Equals(Object)

Возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.

(Унаследовано от Attribute)
GetHashCode()

Возвращает хэш-код для этого экземпляра.

(Унаследовано от Attribute)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
IsDefaultAttribute()

При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса.

(Унаследовано от Attribute)
Match(Object)

При переопределении в производном классе возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.

(Унаследовано от Attribute)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к