/// <summary>从当前私有类型中提取最合适的泛型方法签名。</summary>
        /// <param name="methodName">要在其中搜索签名缓存的方法的名称。</param>
        /// <param name="parameterTypes">与要在其中进行搜索的参数类型对应的类型数组。</param>
        /// <param name="typeArguments">与泛型参数的类型对应的类型数组。</param>
        /// <param name="bindingFlags"><see cref="T:System.Reflection.BindingFlags" /> 以进一步筛选方法签名。</param>
        /// <param name="modifiers">参数的修饰符。</param>
        /// <returns>methodinfo 实例。</returns>
        private MethodInfo GetGenericMethodFromCache(
            string methodName,
            Type[] parameterTypes,
            Type[] typeArguments,
            BindingFlags bindingFlags,
            ParameterModifier[] modifiers)
        {
            LinkedList <MethodInfo> methodCandidates = this.GetMethodCandidates(methodName, parameterTypes, typeArguments, bindingFlags, modifiers);

            MethodInfo[] array = new MethodInfo[methodCandidates.Count];
            methodCandidates.CopyTo(array, 0);
            if (parameterTypes == null || parameterTypes.Length != 0)
            {
                return(RuntimeTypeHelper.SelectMethod(bindingFlags, (MethodBase[])array, parameterTypes, modifiers) as MethodInfo);
            }
            for (int index = 0; index < array.Length; ++index)
            {
                if (!RuntimeTypeHelper.CompareMethodSigAndName((MethodBase)array[index], (MethodBase)array[0]))
                {
                    throw new AmbiguousMatchException();
                }
            }
            return(RuntimeTypeHelper.FindMostDerivedNewSlotMeth((MethodBase[])array, array.Length) as MethodInfo);
        }