MethodImplAttribute 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
指定如何實作方式的詳細資料。 此類別無法獲得繼承。
public ref class MethodImplAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Constructor | System.AttributeTargets.Method, Inherited=false)]
public sealed class MethodImplAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Constructor | System.AttributeTargets.Method, Inherited=false)]
[System.Serializable]
public sealed class MethodImplAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Constructor | System.AttributeTargets.Method, Inherited=false)]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class MethodImplAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Constructor | System.AttributeTargets.Method, Inherited=false)>]
type MethodImplAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Constructor | System.AttributeTargets.Method, Inherited=false)>]
[<System.Serializable>]
type MethodImplAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Constructor | System.AttributeTargets.Method, Inherited=false)>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type MethodImplAttribute = class
inherit Attribute
Public NotInheritable Class MethodImplAttribute
Inherits Attribute
- 繼承
- 屬性
範例
下列範例會將 MethodImplAttribute 套用至 GetCalendarName
方法,以確保它不會在運行時間由 Just-In-Time (JIT) 編譯程式內嵌。
using System;
using System.Globalization;
using System.Runtime.CompilerServices;
public class Utility
{
[MethodImplAttribute(MethodImplOptions.NoInlining)]
public static string GetCalendarName(Calendar cal)
{
return cal.ToString().Replace("System.Globalization.", "").
Replace("Calendar", "");
}
}
Imports System.Globalization
Imports System.Runtime.CompilerServices
Public Class Utility
<MethodImplAttribute(MethodImplOptions.NoInlining)>
Public Shared Function GetCalendarName(cal As Calendar) As String
Return cal.ToString().Replace("System.Globalization.", "").Replace("Calendar", "")
End Function
End Class
下列範例接著會呼叫 MethodInfo.GetMethodImplementationFlags
方法,以判斷方法的 GetCalendarName
旗標設定。 它也會示範此方法不會擷 MemberInfo.GetCustomAttributes 取這項資訊。
using System;
using System.Reflection;
public class Example
{
public static void Main()
{
// Use reflection to get a reference to the GetCalendarName method.
Assembly assem = Assembly.LoadFrom(@".\Example.dll");
Type type = assem.GetType("Utility");
MethodInfo methodInfo = type.GetMethod("GetCalendarName");
// Determine whether the method has any custom attributes.
Console.Write("Utility.GetCalendarName custom attributes:");
object[] attribs = methodInfo.GetCustomAttributes(false);
if (attribs.Length > 0) {
Console.WriteLine();
foreach (var attrib in attribs)
Console.WriteLine(" " + attrib.ToString());
}
else {
Console.WriteLine(" <None>");
}
// Get the method's metadata flags.
MethodImplAttributes flags = methodInfo.GetMethodImplementationFlags();
Console.WriteLine("Utility.GetCalendarName flags: {0}",
flags.ToString());
}
}
// The example displays the following output:
// Utility.GetCalendarName custom attributes: <None>
// Utility.GetCalendarName flags: NoInlining
Imports System.Reflection
Module Example
Public Sub Main()
' Use reflection to get a reference to the GetCalendarName method.
Dim assem As Assembly = Assembly.LoadFrom(".\Example.dll")
Dim type As Type = assem.GetType("Utility")
Dim methodInfo As MethodInfo = type.GetMethod("GetCalendarName")
' Determine whether the method has any custom attributes.
Console.Write("Utility.GetCalendarName custom attributes:")
Dim attribs() As Object = methodInfo.GetCustomAttributes(False)
If attribs.Length > 0 Then
Console.WriteLine()
For Each attrib As Object In attribs
Console.WriteLine(" " + attrib.ToString())
Next
Else
Console.WriteLine(" <None>")
End If
' Get the method's metadata flags.
Dim flags As MethodImplAttributes = methodInfo.GetMethodImplementationFlags()
Console.WriteLine("Utility.GetCalendarName flags: {0}", flags.ToString())
End Sub
End Module
' The example displays the following output:
' Utility.GetCalendarName custom attributes: <None>
' Utility.GetCalendarName flags: NoInlining
備註
您可以將此屬性套用至方法或建構函式。
這個屬性可讓您藉由將值提供給 MethodImplOptions 其類別建構函式,來自定義其套用之方法或建構函式的組態。 列舉的成員 MethodImplOptions 會對應至元數據表中的 CorMethodImpl
位欄位。 這表示無法藉由呼叫 MemberInfo.GetCustomAttributes 方法,在運行時間擷取屬性的資訊;而是藉由呼叫 MethodInfo.GetMethodImplementationFlags
或 方法來 ConstructorInfo.GetMethodImplementationFlags
擷取它。
建構函式
MethodImplAttribute() |
初始化 MethodImplAttribute 類別的新執行個體。 |
MethodImplAttribute(Int16) |
使用指定的 MethodImplOptions 值,初始化 MethodImplAttribute 類別的新執行個體。 |
MethodImplAttribute(MethodImplOptions) |
使用指定的 MethodImplOptions 值,初始化 MethodImplAttribute 類別的新執行個體。 |
欄位
MethodCodeType |
MethodCodeType 值,表示要提供何種實作 (Implementation) 給這個方法。 |
屬性
TypeId |
在衍生類別中實作時,取得這個 Attribute 的唯一識別碼。 (繼承來源 Attribute) |
Value |
取得描述屬性方法的 MethodImplOptions 值。 |
方法
Equals(Object) |
傳回值,這個值指出此執行個體是否與指定的物件相等。 (繼承來源 Attribute) |
GetHashCode() |
傳回這個執行個體的雜湊碼。 (繼承來源 Attribute) |
GetType() |
取得目前執行個體的 Type。 (繼承來源 Object) |
IsDefaultAttribute() |
在衍生類別中覆寫時,表示這個執行個體的值是衍生類別的預設值。 (繼承來源 Attribute) |
Match(Object) |
在衍生類別中覆寫時,會傳回值,表示這個執行個體是否等於指定物件。 (繼承來源 Attribute) |
MemberwiseClone() |
建立目前 Object 的淺層複製。 (繼承來源 Object) |
ToString() |
傳回代表目前物件的字串。 (繼承來源 Object) |
明確介面實作
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
將一組名稱對應至一組對應的分派識別項 (Dispatch Identifier)。 (繼承來源 Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
擷取物件的類型資訊,可以用來取得介面的類型資訊。 (繼承來源 Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
擷取物件提供的類型資訊介面數目 (0 或 1)。 (繼承來源 Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
提供物件所公開的屬性和方法的存取權。 (繼承來源 Attribute) |