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
為 。 - 不得從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) |