Exemplo n.º 1
0
        /// <summary>
        /// 实参是否匹配形参
        /// </summary>
        /// <param name="pi">形参</param>
        /// <param name="args">实参</param>
        /// <returns>bool</returns>
        public static bool IsMatch(ParameterInfo[] pi, Type[] args)
        {
            if (pi.Length != args.Length)
            {
                return(false);
            }
            //暂不考虑可选参数,默认参数,param参数
            for (int i = 0; i < args.Length; i++)
            {
                if (args[i] == null)
                {
                    continue;
                }
                if (args[i] != pi[i].ParameterType && !args[i].IsSubclassOf(pi[i].ParameterType) && !DynamicHelpers.CanChange(args[i], pi[i].ParameterType))
                {
                    return(false);
                }
            }

            return(true);
        }