UnmanagedCallersOnlyAttribute 類別

定義

任何以 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
屬性

範例

下列範例示範如何將標示 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 為 。
  • 不得從 Managed 程式碼呼叫。
  • 只能有 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)

適用於