UnmanagedCallersOnlyAttribute Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Любой метод, помеченный UnmanagedCallersOnlyAttribute, можно вызывать непосредственно из машинного кода. Маркер функции можно загрузить в локальную переменную с помощью оператора
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 в собственную функцию.
[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) |