System.Reflection.Emit.DynamicILGenerator.GetMemberRefToken C# (CSharp) Method

GetMemberRefToken() private method

private GetMemberRefToken ( MethodBase methodInfo, Type optionalParameterTypes ) : int
methodInfo System.Reflection.MethodBase
optionalParameterTypes System.Type
return int
        internal override int GetMemberRefToken(MethodBase methodInfo, Type[] optionalParameterTypes) {
            Type[] parameterTypes;

            if (optionalParameterTypes != null)
                if ((methodInfo.CallingConvention & CallingConventions.VarArgs) == 0)
                     
                    throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_NotAVarArgCallingConvention"));
                
            if (!(methodInfo is RuntimeMethodInfo) && DynamicMethod.AsDynamicMethod(methodInfo) == null)
                throw new ArgumentException(Environment.GetResourceString("Argument_MustBeRuntimeMethodInfo"), "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,
                                                     methodInfo.GetReturnType(),
                                                     parameterTypes,
                                                     optionalParameterTypes);
            return m_scope.GetTokenFor(new VarArgMethod(methodInfo as MethodInfo, sig));
        }