Export (0) Print
Expand All
Expand Minimize

MethodAttributes Enumeration

Specifies flags for method attributes. These flags are defined in the corhdr.h file.

This enumeration has a FlagsAttribute attribute that allows a bitwise combination of its member values.

Namespace:  System.Reflection
Assembly:  mscorlib (in mscorlib.dll)

[FlagsAttribute]
[ComVisibleAttribute(true)]
public enum MethodAttributes

Member nameDescription
Supported by Silverlight for Windows PhoneSupported by Xbox 360MemberAccessMaskRetrieves accessibility information.
Supported by Silverlight for Windows PhoneSupported by Xbox 360PrivateScopeIndicates that the member cannot be referenced.
Supported by Silverlight for Windows PhoneSupported by Xbox 360PrivateIndicates that the method is accessible only to the current class.
Supported by Silverlight for Windows PhoneSupported by Xbox 360FamANDAssemIndicates that the method is accessible to members of this type and its derived types that are in this assembly only.
Supported by Silverlight for Windows PhoneSupported by Xbox 360AssemblyIndicates that the method is accessible to any class of this assembly.
Supported by Silverlight for Windows PhoneSupported by Xbox 360FamilyIndicates that the method is accessible only to members of this class and its derived classes.
Supported by Silverlight for Windows PhoneSupported by Xbox 360FamORAssemIndicates that the method is accessible to derived classes anywhere, as well as to any class in the assembly.
Supported by Silverlight for Windows PhoneSupported by Xbox 360PublicIndicates that the method is accessible to any object for which this object is in scope.
Supported by Silverlight for Windows PhoneSupported by Xbox 360StaticIndicates that the method is defined on the type; otherwise, it is defined per instance.
Supported by Silverlight for Windows PhoneSupported by Xbox 360FinalIndicates that the method cannot be overridden.
Supported by Silverlight for Windows PhoneSupported by Xbox 360VirtualIndicates that the method is virtual.
Supported by Silverlight for Windows PhoneSupported by Xbox 360HideBySigIndicates that the method hides by name and signature; otherwise, by name only.
Supported by Silverlight for Windows PhoneSupported by Xbox 360CheckAccessOnOverrideIndicates that the method can only be overridden when it is also accessible.
Supported by Silverlight for Windows PhoneSupported by Xbox 360VtableLayoutMaskRetrieves vtable attributes.
Supported by Silverlight for Windows PhoneSupported by Xbox 360ReuseSlotIndicates that the method will reuse an existing slot in the vtable. This is the default behavior.
Supported by Silverlight for Windows PhoneSupported by Xbox 360NewSlotIndicates that the method always gets a new slot in the vtable.
Supported by Silverlight for Windows PhoneSupported by Xbox 360AbstractIndicates that the class does not provide an implementation of this method.
Supported by Silverlight for Windows PhoneSupported by Xbox 360SpecialNameIndicates that the method is special. The name describes how this method is special.
Supported by Silverlight for Windows PhoneSupported by Xbox 360PinvokeImplIndicates that the method implementation is forwarded through PInvoke (Platform Invocation Services).
Supported by Silverlight for Windows PhoneSupported by Xbox 360UnmanagedExportIndicates that the managed method is exported by thunk to unmanaged code.
Supported by Silverlight for Windows PhoneSupported by Xbox 360RTSpecialNameIndicates that the common language runtime checks the name encoding.
Supported by Silverlight for Windows PhoneSupported by Xbox 360ReservedMaskIndicates a reserved flag for runtime use only.
Supported by Silverlight for Windows PhoneSupported by Xbox 360HasSecurityIndicates that the method has security associated with it. Reserved flag for runtime use only.
Supported by Silverlight for Windows PhoneSupported by Xbox 360RequireSecObjectIndicates that the method calls another method containing security code. Reserved flag for runtime use only.

The following example displays some of the attributes of an example method, and an attribute of a property accessor.


using System;
using System.Reflection;

class Example
{
   protected virtual internal void MyMethod(int a, ref string b)
   {
      b = "in MyMethod";
   }

   public int P { get { return 42; }}

   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      outputBlock.Text += "Reflection.MethodBase.Attributes Sample\n\n";

      // Get the method and its attributes.
      MethodBase mb = typeof(Example).GetMethod("MyMethod",
                              BindingFlags.NonPublic | BindingFlags.Instance);
      MethodAttributes attribs = mb.Attributes;

      // Display the method name and signature.
      outputBlock.Text += "MethodBase.ToString(): " + mb.ToString() + "\n";

      // Method access is a number, not a flag.
      string memberAccess = "";
      switch (attribs & MethodAttributes.MemberAccessMask)
      {
         case MethodAttributes.PrivateScope:
            memberAccess = "PrivateScope - member is not referenceable";
            break;
         case MethodAttributes.Private:
            memberAccess = "Private";
            break;
         case MethodAttributes.FamANDAssem:
            memberAccess = "FamANDAssem - derived types that are also restricted to the assembly\n" +
               "               This access level cannot be created with C#.\n";
            break;
         case MethodAttributes.Assembly:
            memberAccess = "Assembly - internal";
            break;
         case MethodAttributes.Family:
            memberAccess = "Family - protected";
            break;
         case MethodAttributes.FamORAssem:
            memberAccess = "FamORAssem - protected internal";
            break;
         case MethodAttributes.Public:
            memberAccess = "Public";
            break;
      }

      outputBlock.Text += "Access level: " + memberAccess + "\n";

      MethodAttributes vtable = attribs & MethodAttributes.VtableLayoutMask;
      if (vtable == MethodAttributes.ReuseSlot)
      {
         outputBlock.Text += "Method will reuse an existing slot in the vtable.\n" ;
      }
      else
      {
         outputBlock.Text += "Method always gets a new slot in the vtable.\n";
      }

      if ((attribs & MethodAttributes.Virtual) != 0)
      {
         outputBlock.Text += "Method is overridable.\n" ;
      }
      else
      {
         outputBlock.Text += "Method cannot be overridden.\n";
      }

      MethodInfo propertyGetter = 
         typeof(Example).GetProperty("P").GetGetMethod();
      if (0 != (propertyGetter.Attributes & MethodAttributes.SpecialName))
      {
         outputBlock.Text +=
            String.Format("\nProperty accessor '{0}' has a special name.\n", 
            propertyGetter);
      }
   }
}

/* This code produces output similar to the following:

Reflection.MethodBase.Attributes Sample

MethodBase.ToString(): Void MyMethod(Int32, System.String ByRef, System.String.ByRef)
Access level: FamORAssem - protected internal
Method will reuse an existing slot in the vtable.

Property accessor 'Int32 get_P()' has a special name.
 */


Silverlight

Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

XNA Framework

Supported in: Xbox 360, Windows Phone OS 7.0

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.

Community Additions

ADD
Show:
© 2015 Microsoft