MethodImplAttribute Classe

Definizione

Specifica i dettagli della modalità di implementazione di un metodo.Specifies the details of how a method is implemented. Questa classe non può essere ereditata.This class cannot be inherited.

public ref class MethodImplAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Constructor | System.AttributeTargets.Method, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public sealed class MethodImplAttribute : Attribute
type MethodImplAttribute = class
    inherit Attribute
Public NotInheritable Class MethodImplAttribute
Inherits Attribute
Ereditarietà
MethodImplAttribute
Attributi

Esempi

Nell'esempio seguente viene applicato MethodImplAttribute GetCalendarName al metodo per verificare che non sia inline in fase di esecuzione dal compilatore just-in-time (JIT).The following example applies the MethodImplAttribute to the GetCalendarName method to ensure that it is not inlined at run time by the just-in-time (JIT) compiler.

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

Nell'esempio seguente viene quindi chiamato MethodInfo.GetMethodImplementationFlags il metodo per determinare i flag impostati per il GetCalendarName metodo.The following example then calls the MethodInfo.GetMethodImplementationFlags method to determine which flags are set for the GetCalendarName method. Viene inoltre illustrato che queste informazioni non vengono recuperate dal MemberInfo.GetCustomAttributes metodo.It also demonstrates that this information is not retrieved by the MemberInfo.GetCustomAttributes method.

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

Commenti

È possibile applicare questo attributo a metodi o costruttori.You can apply this attribute to methods or constructors.

Questo attributo consente di personalizzare la configurazione del metodo o del costruttore a cui si applica fornendo un MethodImplOptions valore al relativo costruttore di classe.This attribute lets you customize the configuration of the method or constructor to which it applies by supplying a MethodImplOptions value to its class constructor. I membri dell' MethodImplOptions enumerazione corrispondono ai campi di bit CorMethodImpl nella tabella dei metadati.The members of the MethodImplOptions enumeration correspond to bit fields in the CorMethodImpl metadata table. Ciò significa che non è possibile recuperare le informazioni sull'attributo in fase di esecuzione chiamando MemberInfo.GetCustomAttributes il metodo. viene invece recuperato MethodInfo.GetMethodImplementationFlags chiamando il ConstructorInfo.GetMethodImplementationFlags metodo o.This means that information on the attribute cannot be retrieved at run time by calling the MemberInfo.GetCustomAttributes method; instead, it is retrieved by calling either the MethodInfo.GetMethodImplementationFlags or the ConstructorInfo.GetMethodImplementationFlags method.

Costruttori

MethodImplAttribute()

Inizializza una nuova istanza della classe MethodImplAttribute.Initializes a new instance of the MethodImplAttribute class.

MethodImplAttribute(Int16)

Inizializza una nuova istanza della classe MethodImplAttribute con il valore MethodImplOptions specificato.Initializes a new instance of the MethodImplAttribute class with the specified MethodImplOptions value.

MethodImplAttribute(MethodImplOptions)

Inizializza una nuova istanza della classe MethodImplAttribute con il valore MethodImplOptions specificato.Initializes a new instance of the MethodImplAttribute class with the specified MethodImplOptions value.

Campi

MethodCodeType

Valore MethodCodeType che indica il tipo di implementazione fornita per questo metodo.A MethodCodeType value indicating what kind of implementation is provided for this method.

Proprietà

TypeId

Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Ereditato da Attribute)
Value

Ottiene il valore MethodImplOptions che descrive il metodo con attributi.Gets the MethodImplOptions value describing the attributed method.

Metodi

Equals(Object)

Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.Returns a value that indicates whether this instance is equal to a specified object.

(Ereditato da Attribute)
GetHashCode()

Restituisce il codice hash per l'istanza.Returns the hash code for this instance.

(Ereditato da Attribute)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Ereditato da Object)
IsDefaultAttribute()

In caso di override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Ereditato da Attribute)
Match(Object)

Quando è sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Ereditato da Attribute)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch.Maps a set of names to a corresponding set of dispatch identifiers.

(Ereditato da Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sul tipo relative a un oggetto, che possono essere usate per ottenere informazioni sul tipo relative a un'interfaccia.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Ereditato da Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Ereditato da Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornisce l'accesso a proprietà e metodi esposti da un oggetto.Provides access to properties and methods exposed by an object.

(Ereditato da Attribute)

Si applica a

Vedi anche