FindGenericType() static private method

static private FindGenericType ( Type definition, Type type ) : Type
definition Type
type Type
return Type
        IQueryable IQueryProvider.CreateQuery(System.Linq.Expressions.Expression expression)
        {
            if (expression == null)
            {
                throw System.Linq.Error.ArgumentNull("expression");
            }
            Type type = TypeHelper.FindGenericType(typeof(IQueryable <>), expression.Type);

            if (type == null)
            {
                throw System.Linq.Error.ArgumentNotValid("expression");
            }
            return(EnumerableQuery.Create(type.GetGenericArguments()[0], expression));
        }
Esempio n. 2
0
        private static Type StripExpression(Type type)
        {
            bool isArray = type.IsArray;
            Type tmp     = isArray ? type.GetElementType() : type;
            Type eType   = TypeHelper.FindGenericType(typeof(Expression <>), tmp);

            if (eType != null)
            {
                tmp = eType.GetGenericArguments()[0];
            }
            if (isArray)
            {
                int rank = type.GetArrayRank();
                return((rank == 1) ? tmp.MakeArrayType() : tmp.MakeArrayType(rank));
            }
            return(type);
        }
        private static Type StripExpression(Type type)
        {
            bool isArray = type.IsArray;
            Type type2   = isArray ? type.GetElementType() : type;
            Type type3   = TypeHelper.FindGenericType(typeof(Expression <>), type2);

            if (type3 != null)
            {
                type2 = type3.GetGenericArguments()[0];
            }
            if (!isArray)
            {
                return(type);
            }
            int arrayRank = type.GetArrayRank();

            if (arrayRank != 1)
            {
                return(type2.MakeArrayType(arrayRank));
            }
            return(type2.MakeArrayType());
        }