public Expression Deserialize(IDeserializationContext context, IExpressionNode node) { var handler = serviceProvider.GetService( typeof(IExpressionDeserializer <>).MakeGenericType(node.GetType()) ); if (handler == null) { throw new InvalidOperationException( $"No deserializer registered for node type {node.GetType()}" ); } return((handler as IExpressionDeserializer).Deserialize(context, node)); }
/// <summary> /// Evaluates the expression as an lvalue and answers the result type. </summary> /// <param name="context"> used to resolve properties (<code>base.property</code> and <code>base[property]</code>) /// and to determine the result from the last base/property pair </param> /// <returns> lvalue evaluation type or <code>null</code> for rvalue expressions </returns> /// <exception cref="ELException"> if evaluation fails (e.g. property not found, type conversion failed, ...) </exception> public override Type GetType(ELContext context) { return(node.GetType(bindings, context)); }
public virtual void VisitExpression(IExpressionNode node) { if (node == null) return; if (node is SqlConstantExpressionNode) { VisitConstantExpression((SqlConstantExpressionNode) node); } else if (node is SqlReferenceExpressionNode) { VisitReferenceExpression((SqlReferenceExpressionNode) node); } else if (node is SqlVariableRefExpressionNode) { VisitVariableRefExpression((SqlVariableRefExpressionNode) node); } else if (node is SqlBetweenExpressionNode) { VisitBetweenExpression((SqlBetweenExpressionNode) node); } else if (node is SqlCaseExpressionNode) { VisitCaseExpression((SqlCaseExpressionNode) node); } else if (node is SqlFunctionCallExpressionNode) { VisitFunctionCall((SqlFunctionCallExpressionNode) node); } else if (node is SqlExpressionTupleNode) { VisitTupleExpression((SqlExpressionTupleNode) node); } else if (node is SqlBinaryExpressionNode) { VisitBinaryExpression((SqlBinaryExpressionNode) node); } else if (node is SqlUnaryExpressionNode) { VisitUnaryExpression((SqlUnaryExpressionNode) node); } else if (node is SqlQueryExpressionNode) { VisitQueryExpression((SqlQueryExpressionNode) node); } else { throw new InvalidOperationException(String.Format("The expression node of type '{0}' is invalid.", node.GetType())); } }
public void visit(IExpressionNode value) { string s = value.GetType().Name + "."; prepare_node(value.type, s + ""); }
public virtual void VisitExpression(IExpressionNode node) { if (node == null) { return; } if (node is SqlConstantExpressionNode) { VisitConstantExpression((SqlConstantExpressionNode)node); } else if (node is SqlReferenceExpressionNode) { VisitReferenceExpression((SqlReferenceExpressionNode)node); } else if (node is SqlVariableRefExpressionNode) { VisitVariableRefExpression((SqlVariableRefExpressionNode)node); } else if (node is SqlBetweenExpressionNode) { VisitBetweenExpression((SqlBetweenExpressionNode)node); } else if (node is SqlCaseExpressionNode) { VisitCaseExpression((SqlCaseExpressionNode)node); } else if (node is SqlFunctionCallExpressionNode) { VisitFunctionCall((SqlFunctionCallExpressionNode)node); } else if (node is SqlExpressionTupleNode) { VisitTupleExpression((SqlExpressionTupleNode)node); } else if (node is SqlBinaryExpressionNode) { VisitBinaryExpression((SqlBinaryExpressionNode)node); } else if (node is SqlUnaryExpressionNode) { VisitUnaryExpression((SqlUnaryExpressionNode)node); } else if (node is SqlQueryExpressionNode) { VisitQueryExpression((SqlQueryExpressionNode)node); } else { throw new InvalidOperationException(String.Format("The expression node of type '{0}' is invalid.", node.GetType())); } }
public void visit(IExpressionNode value) { throw new System.NotSupportedException(value.GetType().ToString()); }