MethodBase

MethodBase CF 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( )}



C# in a Nutshell
C # in a Nutshell, Second Edition
ISBN: 0596005261
EAN: 2147483647
Year: 2005
Pages: 963

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net