DekGenius.com
[ Team LiB ] Previous Section Next Section

MethodBaseCF 1.0, ECMA 1.0, serializable

System.Reflection (mscorlib.dll)abstract class

This is an abstract base class representing executable method calls, which fall into two categories: regular methods and constructors. GetCurrentMethod( ) and GetMethodFromHandle( ) are static methods that return the currently executing method and a method represented by a System.RuntimeMethodHandle object, respectively. The MethodHandle returns the handle for a specific method instance.

The properties prefixed by Is return boolean values, allowing inspection of the modifiers of the reflected method. Only some require explanation: IsAssembly returns true if the method is internal, and IsFamily returns true for protected methods. If a member of exactly the same name and signature is hidden by a derived class, IsHideBySig is true. IsSpecialName indicates whether this method has a special name, such as a property accessor, get_PropertyName or set_PropertyName.

Similarly, the attributes on a given method can be inspected from the Attributes property. GetParameters( ) returns the parameters of a method or constructor, and GetMethodImplementationFlags( ) returns the MethodImplAttributes flags set on the method.

In addition to introspecting on a method, the MethodBase also allows for reflective invocation of a method, using the Invoke( ) method. Note that Invoke( ) requires both the object instance against which to invoke the method (or null if the method is declared static), as well as an array of object references containing the arguments to the method, in their proper order. Should the argument array mismatch in any way (wrong number of arguments, wrong type of arguments, wrong order of arguments, and so on), an exception is thrown and the method call is not even attempted. Method invocation in this manner is much slower than direct compile-time-bound method execution.

public abstract class MethodBase : MemberInfo {
// Protected Constructors
   protected MethodBase( );
// Public Instance Properties
   public abstract MethodAttributes Attributes{get; }
   public virtual CallingConventions CallingConvention{get; }
   public bool IsAbstract{get; }
   public bool IsAssembly{get; }
   public bool IsConstructor{get; }
   public bool IsFamily{get; }
   public bool IsFamilyAndAssembly{get; }
   public bool IsFamilyOrAssembly{get; }
   public bool IsFinal{get; }
   public bool IsHideBySig{get; }
   public bool IsPrivate{get; }
   public bool IsPublic{get; }
   public bool IsSpecialName{get; }
   public bool IsStatic{get; }
   public bool IsVirtual{get; }
   public abstract RuntimeMethodHandle MethodHandle{get; }
// Public Static Methods
   public static MethodBase GetCurrentMethod( );
   public static MethodBase GetMethodFromHandle(RuntimeMethodHandle handle);
// Public Instance Methods
   public abstract MethodImplAttributes GetMethodImplementationFlags( );
   public abstract ParameterInfo[ ] GetParameters( );
   public abstract object Invoke(object obj, BindingFlags invokeAttr, Binder binder, 
       object[ ] parameters, System.Globalization.CultureInfo culture);
   public object Invoke(object obj, object[ ] parameters);
}

Hierarchy

System.Object MemberInfo(ICustomAttributeProvider) MethodBase

Subclasses

ConstructorInfo, MethodInfo

Returned By

System.Diagnostics.StackFrame.GetMethod( ), System.Exception.TargetSite, Binder.{BindToMethod( ), SelectMethod( )}

Passed To

Binder.{BindToMethod( ), SelectMethod( )}

    [ Team LiB ] Previous Section Next Section