private int GetMemberRefToken(MethodBase methodInfo, Type[] optionalParameterTypes) { Type[] parameterTypes; if (optionalParameterTypes != null && (methodInfo.CallingConvention & CallingConventions.VarArgs) == 0) { throw new InvalidOperationException(SR.InvalidOperation_NotAVarArgCallingConvention); } RuntimeMethodInfo rtMeth = methodInfo as RuntimeMethodInfo; DynamicMethod dm = methodInfo as DynamicMethod; if (rtMeth == null && dm == null) { throw new ArgumentException(SR.Argument_MustBeRuntimeMethodInfo, nameof(methodInfo)); } ParameterInfo[] paramInfo = methodInfo.GetParametersNoCopy(); if (paramInfo != null && paramInfo.Length != 0) { parameterTypes = new Type[paramInfo.Length]; for (int i = 0; i < paramInfo.Length; i++) { parameterTypes[i] = paramInfo[i].ParameterType; } } else { parameterTypes = null; } SignatureHelper sig = GetMemberRefSignature(methodInfo.CallingConvention, MethodBuilder.GetMethodBaseReturnType(methodInfo), parameterTypes, optionalParameterTypes); if (rtMeth != null) { return(GetTokenForVarArgMethod(rtMeth, sig)); } else { return(GetTokenForVarArgMethod(dm, sig)); } }
private int GetMemberRefToken(MethodBase methodInfo, Type[] optionalParameterTypes) { if (optionalParameterTypes != null && (methodInfo.CallingConvention & CallingConventions.VarArgs) == (CallingConventions)0) { throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_NotAVarArgCallingConvention")); } RuntimeMethodInfo rtMeth = methodInfo as RuntimeMethodInfo; DynamicMethod dm = methodInfo as DynamicMethod; if ((MethodInfo)rtMeth == (MethodInfo)null && (MethodInfo)dm == (MethodInfo)null) { throw new ArgumentException(Environment.GetResourceString("Argument_MustBeRuntimeMethodInfo"), "methodInfo"); } ParameterInfo[] parametersNoCopy = methodInfo.GetParametersNoCopy(); Type[] parameterTypes; if (parametersNoCopy != null && parametersNoCopy.Length != 0) { parameterTypes = new Type[parametersNoCopy.Length]; for (int index = 0; index < parametersNoCopy.Length; ++index) { parameterTypes[index] = parametersNoCopy[index].ParameterType; } } else { parameterTypes = (Type[])null; } SignatureHelper memberRefSignature = this.GetMemberRefSignature(methodInfo.CallingConvention, MethodBuilder.GetMethodBaseReturnType(methodInfo), parameterTypes, optionalParameterTypes); if ((MethodInfo)rtMeth != (MethodInfo)null) { return(this.GetTokenForVarArgMethod(rtMeth, memberRefSignature)); } return(this.GetTokenForVarArgMethod(dm, memberRefSignature)); }
internal override int GetMemberRefToken(MethodBase methodInfo, Type[] optionalParameterTypes) { Type[] typeArray; if ((optionalParameterTypes != null) && ((methodInfo.CallingConvention & CallingConventions.VarArgs) == 0)) { throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_NotAVarArgCallingConvention")); } if (!((methodInfo is RuntimeMethodInfo) || (methodInfo is DynamicMethod))) { throw new ArgumentException(Environment.GetResourceString("Argument_MustBeRuntimeMethodInfo"), "methodInfo"); } ParameterInfo[] parametersNoCopy = methodInfo.GetParametersNoCopy(); if ((parametersNoCopy != null) && (parametersNoCopy.Length != 0)) { typeArray = new Type[parametersNoCopy.Length]; for (int i = 0; i < parametersNoCopy.Length; i++) { typeArray[i] = parametersNoCopy[i].ParameterType; } } else { typeArray = null; } SignatureHelper signature = this.GetMemberRefSignature(methodInfo.CallingConvention, MethodBuilder.GetMethodBaseReturnType(methodInfo), typeArray, optionalParameterTypes); return(this.m_scope.GetTokenFor(new VarArgMethod(methodInfo as RuntimeMethodInfo, methodInfo as DynamicMethod, signature))); }
private int GetMemberRefToken(MethodBase methodInfo, Type[] optionalParameterTypes) { if (optionalParameterTypes != null && (methodInfo.CallingConvention & CallingConventions.VarArgs) == (CallingConventions)0) { throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_NotAVarArgCallingConvention")); } RuntimeMethodInfo runtimeMethodInfo = methodInfo as RuntimeMethodInfo; DynamicMethod dynamicMethod = methodInfo as DynamicMethod; if (runtimeMethodInfo == null && dynamicMethod == null) { throw new ArgumentException(Environment.GetResourceString("Argument_MustBeRuntimeMethodInfo"), "methodInfo"); } ParameterInfo[] parametersNoCopy = methodInfo.GetParametersNoCopy(); Type[] array; if (parametersNoCopy != null && parametersNoCopy.Length != 0) { array = new Type[parametersNoCopy.Length]; for (int i = 0; i < parametersNoCopy.Length; i++) { array[i] = parametersNoCopy[i].ParameterType; } } else { array = null; } SignatureHelper memberRefSignature = this.GetMemberRefSignature(methodInfo.CallingConvention, MethodBuilder.GetMethodBaseReturnType(methodInfo), array, optionalParameterTypes); if (runtimeMethodInfo != null) { return(this.GetTokenForVarArgMethod(runtimeMethodInfo, memberRefSignature)); } return(this.GetTokenForVarArgMethod(dynamicMethod, memberRefSignature)); }