Exemplo n.º 1
0
 internal ODataSelectColumnExpression(ODataMemberAccessExpression expression, bool allColumns)
 // TODO FUTURE we have to pass typeof(object) here for select *. We could fix this with a "ParameterExpression" type
     : base(ODataExpressionKind.SelectColumn, expression != null ? expression.Type : ODataExpressionType.Complex, expression != null ? expression.ClrType : typeof(object))
 {
     this.Expression = expression;
     this.AllColumns = allColumns;
 }
Exemplo n.º 2
0
        internal static ODataMemberAccessExpression MemberAccess(ODataMemberAccessExpression expression, PropertyInfo member)
        {
            Throw.IfNull(member, "member");

            var finalExpression = expression != null && expression.Type == ODataExpressionType.Unknown
                ? ConvertFromUnknownType(expression, typeof(ODataEntity))
                : expression;

            return(new ODataMemberAccessExpression(finalExpression, member));
        }
Exemplo n.º 3
0
        internal static ODataSelectColumnExpression SelectColumn(ODataMemberAccessExpression memberAccess, bool allColumns)
        {
            Throw.If(
                allColumns && memberAccess != null && memberAccess.Type != ODataExpressionType.Complex && memberAccess.Type != ODataExpressionType.Unknown,
                "'*' can only be selected for non-primitive types!"
                );
            Throw.If(memberAccess == null && !allColumns, "If no property path is specified, then '*' must be selected!");

            var finalMemberAccess = allColumns && memberAccess != null && memberAccess.Type == ODataExpressionType.Unknown
                ? ConvertFromUnknownType(memberAccess, typeof(object))
                : memberAccess;

            return(new ODataSelectColumnExpression(finalMemberAccess, allColumns: allColumns));
        }
Exemplo n.º 4
0
 internal ODataMemberAccessExpression(ODataMemberAccessExpression expression, PropertyInfo member)
     : base(ODataExpressionKind.MemberAccess, member.PropertyType.ToODataExpressionType(), member.PropertyType)
 {
     this.Expression = expression;
     this.Member     = member;
 }
 protected virtual void VisitMemberAccess(ODataMemberAccessExpression node)
 {
     this.Visit(node.Expression);
 }
 protected override void VisitMemberAccess(ODataMemberAccessExpression node)
 {
     var path = Traverse.Along(node, e => e.Expression)
         .Reverse()
         .Select(e => e.Member)
         .ToArray();
     this._paths.Add(path);
 }
 // TODO FUTURE we have to pass typeof(object) here for select *. We could fix this with a "ParameterExpression" type
 internal ODataSelectColumnExpression(ODataMemberAccessExpression expression, bool allColumns)
     : base(ODataExpressionKind.SelectColumn, expression != null ? expression.Type : ODataExpressionType.Complex, expression != null ? expression.ClrType : typeof(object))
 {
     this.Expression = expression;
     this.AllColumns = allColumns;
 }
 internal ODataMemberAccessExpression(ODataMemberAccessExpression expression, PropertyInfo member)
     : base(ODataExpressionKind.MemberAccess, member.PropertyType.ToODataExpressionType(), member.PropertyType)
 {
     this.Expression = expression;
     this.Member = member;
 }
 protected virtual void VisitMemberAccess(ODataMemberAccessExpression node)
 {
     this.Visit(node.Expression);
 }
Exemplo n.º 10
0
        internal static ODataSelectColumnExpression SelectColumn(ODataMemberAccessExpression memberAccess, bool allColumns)
        {
            Throw.If(allColumns && memberAccess != null && memberAccess.Type != ODataExpressionType.Complex, "'*' can only be selected for non-primitive types!");
            Throw.If(memberAccess == null && !allColumns, "If no property path is specified, then '*' must be selected!");

            return new ODataSelectColumnExpression(memberAccess, allColumns: allColumns);
        }
Exemplo n.º 11
0
        internal static ODataMemberAccessExpression MemberAccess(ODataMemberAccessExpression expression, PropertyInfo member)
        {
            Throw.IfNull(member, "member");

            return new ODataMemberAccessExpression(expression, member);
        }