2 // System.Reflection/MethodBase.cs
5 // Paolo Molaro (lupus@ximian.com)
7 // (C) 2001 Ximian, Inc. http://www.ximian.com
11 using System.Globalization;
12 using System.Reflection.Emit;
14 namespace System.Reflection {
16 public abstract class MethodBase: MemberInfo {
18 public static MethodBase GetCurrentMethod()
23 public static MethodBase GetMethodFromHandle(RuntimeMethodHandle handle)
28 public abstract MethodImplAttributes GetMethodImplementationFlags();
30 public abstract ParameterInfo[] GetParameters();
32 public Object Invoke(Object obj, Object[] parameters) {
36 public abstract Object Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture);
38 protected MethodBase()
42 public abstract RuntimeMethodHandle MethodHandle { get; }
43 public abstract MethodAttributes Attributes { get; }
44 public virtual CallingConventions CallingConvention { get {return CallingConventions.Standard;} }
45 public Boolean IsPublic {
47 int attr = (int)Attributes;
48 return (attr & (int)MethodAttributes.Public) != 0;
51 public Boolean IsPrivate {
53 int attr = (int)Attributes;
54 return (attr & (int)MethodAttributes.Private) != 0;
57 public Boolean IsFamily {
59 int attr = (int)Attributes;
60 return (attr & (int)MethodAttributes.Family) != 0;
63 public Boolean IsAssembly {
65 int attr = (int)Attributes;
66 return (attr & (int)MethodAttributes.Assembly) != 0;
69 public Boolean IsFamilyAndAssembly {
71 int attr = (int)Attributes;
72 return (attr & (int)MethodAttributes.FamANDAssem) != 0;
75 public Boolean IsFamilyOrAssembly {
77 int attr = (int)Attributes;
78 return (attr & (int)MethodAttributes.FamORAssem) != 0;
81 public Boolean IsStatic {
83 int attr = (int)Attributes;
84 return (attr & (int)MethodAttributes.Static) != 0;
87 public Boolean IsFinal {
89 int attr = (int)Attributes;
90 return (attr & (int)MethodAttributes.Final) != 0;
93 public Boolean IsVirtual {
95 int attr = (int)Attributes;
96 return (attr & (int)MethodAttributes.Virtual) != 0;
99 public Boolean IsHideBySig {
101 int attr = (int)Attributes;
102 return (attr & (int)MethodAttributes.HideBySig) != 0;
105 public Boolean IsAbstract {
107 int attr = (int)Attributes;
108 return (attr & (int)MethodAttributes.Abstract) != 0;
111 public Boolean IsSpecialName {
113 int attr = (int)Attributes;
114 return (attr & (int)MethodAttributes.SpecialName) != 0;
117 public Boolean IsConstructor {
119 int attr = (int)Attributes;
120 return ((attr & (int)MethodAttributes.RTSpecialName) != 0
121 && (Name == ".ctor"));
125 internal virtual int get_next_table_index (int table, bool inc) {
126 if (this is MethodBuilder) {
127 MethodBuilder mb = (MethodBuilder)this;
128 return mb.get_next_table_index (table, inc);
130 if (this is ConstructorBuilder) {
131 ConstructorBuilder mb = (ConstructorBuilder)this;
132 return mb.get_next_table_index (table, inc);
134 throw new Exception ("Method is not a builder method");