/// <summary> /// Visits a <see cref="SerializableMethodCallExpression"/>. /// </summary> /// <param name="expression"><see cref="SerializableMethodCallExpression"/> to visit.</param> /// <returns>Returns the converted <see cref="Expression"/>.</returns> protected abstract Expression VisitSerializableMethodCallExpression(SerializableMethodCallExpression expression);
/// <summary> /// Executes a <see cref="SerializableMethodCallExpression"/> and returns the result. /// </summary> /// <param name="expression"><see cref="SerializableMethodCallExpression"/> to convert.</param> /// <returns>Returns the result of a <see cref="SerializableMethodCallExpression"/>.</returns> protected abstract object GetResultMethodCallExpression(SerializableMethodCallExpression expression);
/// <summary> /// Visits a <see cref="SerializableMethodCallExpression"/>. /// </summary> /// <param name="expression"><see cref="SerializableMethodCallExpression"/> to visit.</param> /// <returns>Returns the converted <see cref="Expression"/>.</returns> protected override Expression VisitSerializableMethodCallExpression(SerializableMethodCallExpression expression) { return(Expression.Call(Visit(expression.Object), (MethodInfo)expression.Method.GetClrVersion(), VisitCollection <Expression>(expression.Arguments))); }
/// <summary> /// Executes a <see cref="SerializableMethodCallExpression"/> and returns the result. /// </summary> /// <param name="expression"><see cref="SerializableMethodCallExpression"/> to convert.</param> /// <returns>Returns the result of a <see cref="SerializableMethodCallExpression"/>.</returns> protected override object GetResultMethodCallExpression(SerializableMethodCallExpression expression, object sessionObject) { return(InvokeMethodCall(expression, sessionObject)); }
private Expression VisitMethodCall(SerializableMethodCallExpression mc) { return(Expression.Call(Visit(mc.Object), mc.Method, VisitExpressionSequence(mc.Arguments))); }