using System; using System.Globalization; using System.Runtime.CompilerServices; using System.Runtime.Serialization; using System.Text; namespace System.Reflection { // Token: 0x0200025B RID: 603 internal class MonoCMethod : ConstructorInfo, ISerializable { // Token: 0x06001F62 RID: 8034 RVA: 0x000735A8 File Offset: 0x000717A8 public override MethodImplAttributes GetMethodImplementationFlags() { return MonoMethodInfo.GetMethodImplementationFlags(this.mhandle); } // Token: 0x06001F63 RID: 8035 RVA: 0x000735B8 File Offset: 0x000717B8 public override ParameterInfo[] GetParameters() { return MonoMethodInfo.GetParametersInfo(this.mhandle, this); } // Token: 0x06001F64 RID: 8036 [MethodImpl(MethodImplOptions.InternalCall)] internal extern object InternalInvoke(object obj, object[] parameters, out Exception exc); // Token: 0x06001F65 RID: 8037 RVA: 0x000735C8 File Offset: 0x000717C8 public override object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, CultureInfo culture) { if (binder == null) { binder = Binder.DefaultBinder; } ParameterInfo[] parameters2 = this.GetParameters(); if ((parameters == null && parameters2.Length != 0) || (parameters != null && parameters.Length != parameters2.Length)) { throw new TargetParameterCountException("parameters do not match signature"); } if ((invokeAttr & BindingFlags.ExactBinding) == BindingFlags.Default) { if (!Binder.ConvertArgs(binder, parameters, parameters2, culture)) { throw new ArgumentException("failed to convert parameters"); } } else { for (int i = 0; i < parameters2.Length; i++) { if (parameters[i].GetType() != parameters2[i].ParameterType) { throw new ArgumentException("parameters do not match signature"); } } } if (obj == null && this.DeclaringType.ContainsGenericParameters) { throw new MemberAccessException("Cannot create an instance of " + this.DeclaringType + " because Type.ContainsGenericParameters is true."); } if ((invokeAttr & BindingFlags.CreateInstance) != BindingFlags.Default && this.DeclaringType.IsAbstract) { throw new MemberAccessException(string.Format("Cannot create an instance of {0} because it is an abstract class", this.DeclaringType)); } Exception ex = null; object obj2 = null; try { obj2 = this.InternalInvoke(obj, parameters, out ex); } catch (MethodAccessException) { throw; } catch (Exception ex2) { throw new TargetInvocationException(ex2); } if (ex != null) { throw ex; } return (obj != null) ? null : obj2; } // Token: 0x06001F66 RID: 8038 RVA: 0x00073750 File Offset: 0x00071950 public override object Invoke(BindingFlags invokeAttr, Binder binder, object[] parameters, CultureInfo culture) { return this.Invoke(null, invokeAttr, binder, parameters, culture); } // Token: 0x170005CF RID: 1487 // (get) Token: 0x06001F67 RID: 8039 RVA: 0x00073760 File Offset: 0x00071960 public override RuntimeMethodHandle MethodHandle { get { return new RuntimeMethodHandle(this.mhandle); } } // Token: 0x170005D0 RID: 1488 // (get) Token: 0x06001F68 RID: 8040 RVA: 0x00073770 File Offset: 0x00071970 public override MethodAttributes Attributes { get { return MonoMethodInfo.GetAttributes(this.mhandle); } } // Token: 0x170005D1 RID: 1489 // (get) Token: 0x06001F69 RID: 8041 RVA: 0x00073780 File Offset: 0x00071980 public override CallingConventions CallingConvention { get { return MonoMethodInfo.GetCallingConvention(this.mhandle); } } // Token: 0x170005D2 RID: 1490 // (get) Token: 0x06001F6A RID: 8042 RVA: 0x00073790 File Offset: 0x00071990 public override Type ReflectedType { get { return this.reftype; } } // Token: 0x170005D3 RID: 1491 // (get) Token: 0x06001F6B RID: 8043 RVA: 0x00073798 File Offset: 0x00071998 public override Type DeclaringType { get { return MonoMethodInfo.GetDeclaringType(this.mhandle); } } // Token: 0x170005D4 RID: 1492 // (get) Token: 0x06001F6C RID: 8044 RVA: 0x000737A8 File Offset: 0x000719A8 public override string Name { get { if (this.name != null) { return this.name; } return MonoMethod.get_name(this); } } // Token: 0x06001F6D RID: 8045 RVA: 0x000737C4 File Offset: 0x000719C4 public override bool IsDefined(Type attributeType, bool inherit) { return MonoCustomAttrs.IsDefined(this, attributeType, inherit); } // Token: 0x06001F6E RID: 8046 RVA: 0x000737D0 File Offset: 0x000719D0 public override object[] GetCustomAttributes(bool inherit) { return MonoCustomAttrs.GetCustomAttributes(this, inherit); } // Token: 0x06001F6F RID: 8047 RVA: 0x000737DC File Offset: 0x000719DC public override object[] GetCustomAttributes(Type attributeType, bool inherit) { return MonoCustomAttrs.GetCustomAttributes(this, attributeType, inherit); } // Token: 0x06001F70 RID: 8048 RVA: 0x000737E8 File Offset: 0x000719E8 public override MethodBody GetMethodBody() { return MethodBase.GetMethodBody(this.mhandle); } // Token: 0x06001F71 RID: 8049 RVA: 0x000737F8 File Offset: 0x000719F8 public override string ToString() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append("Void "); stringBuilder.Append(this.Name); stringBuilder.Append("("); ParameterInfo[] parameters = this.GetParameters(); for (int i = 0; i < parameters.Length; i++) { if (i > 0) { stringBuilder.Append(", "); } stringBuilder.Append(parameters[i].ParameterType.Name); } if (this.CallingConvention == CallingConventions.Any) { stringBuilder.Append(", ..."); } stringBuilder.Append(")"); return stringBuilder.ToString(); } // Token: 0x06001F72 RID: 8050 RVA: 0x0007389C File Offset: 0x00071A9C public void GetObjectData(SerializationInfo info, StreamingContext context) { MemberInfoSerializationHolder.Serialize(info, this.Name, this.ReflectedType, this.ToString(), MemberTypes.Constructor); } // Token: 0x04000AD1 RID: 2769 internal IntPtr mhandle; // Token: 0x04000AD2 RID: 2770 private string name; // Token: 0x04000AD3 RID: 2771 private Type reftype; } }