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 AttributePublic 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) |