UnmanagedCallersOnlyAttribute 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
标记有 UnmanagedCallersOnlyAttribute 的任何方法均可从本机代码中直接调用。 可以使用 C# 的 address-of 运算符将函数令牌加载到局部变量,并作为回叫传递给本机方法。
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
。 - 不得从托管代码调用。
- 必须仅具有 blittable 参数。
- 不得具有泛型类型参数或包含在泛型类中。
构造函数
UnmanagedCallersOnlyAttribute() |
初始化一个新 UnmanagedCallersOnlyAttribute 实例。 |
字段
CallConvs |
可选。 如果省略,运行时将使用 默认的平台调用约定。 |
EntryPoint |
可选。 如果省略,编译过程中便不会发出任何已命名导出。 |
属性
TypeId |
在派生类中实现时,获取此 Attribute 的唯一标识符。 (继承自 Attribute) |
方法
Equals(Object) |
返回一个值,该值指示此实例是否与指定的对象相等。 (继承自 Attribute) |
GetHashCode() |
返回此实例的哈希代码。 (继承自 Attribute) |
GetType() |
获取当前实例的 Type。 (继承自 Object) |
IsDefaultAttribute() |
在派生类中重写时,指示此实例的值是否是派生类的默认值。 (继承自 Attribute) |
Match(Object) |
当在派生类中重写时,返回一个指示此实例是否等于指定对象的值。 (继承自 Attribute) |
MemberwiseClone() |
创建当前 Object 的浅表副本。 (继承自 Object) |
ToString() |
返回表示当前对象的字符串。 (继承自 Object) |