System.Linq.Expressions.Expression.IsCompatible C# (CSharp) Method

IsCompatible() private static method

private static IsCompatible ( MethodBase m, Expression arguments ) : bool
m System.Reflection.MethodBase
arguments Expression
return bool
        private static bool IsCompatible(MethodBase m, Expression[] arguments)
        {
            ParameterInfo[] parms = m.GetParametersCached();
            if (parms.Length != arguments.Length)
                return false;
            for (int i = 0; i < arguments.Length; i++)
            {
                Expression arg = arguments[i];
                ContractUtils.RequiresNotNull(arg, nameof(arguments));
                Type argType = arg.Type;
                Type pType = parms[i].ParameterType;
                if (pType.IsByRef)
                {
                    pType = pType.GetElementType();
                }
                if (!TypeUtils.AreReferenceAssignable(pType, argType) &&
                    !(TypeUtils.IsSameOrSubclass(typeof(LambdaExpression), pType) && pType.IsAssignableFrom(arg.GetType())))
                {
                    return false;
                }
            }
            return true;
        }

Same methods

Expression::IsCompatible ( PropertyInfo pi, Expression args ) : bool
Expression