public static Expression GetTypedBody <TContext> (Type expectedType, Func <TContext, Expression> bodyProvider, TContext context) where TContext : BodyContextBase { ArgumentUtility.CheckNotNull("expectedType", expectedType); ArgumentUtility.CheckNotNull("bodyProvider", bodyProvider); ArgumentUtility.CheckNotNull("context", context); var body = ProviderUtility.GetNonNullValue(bodyProvider, context, "bodyProvider"); return(ExpressionTypeUtility.EnsureCorrectType(body, expectedType)); }
private static Expression EnsureCorrectType(Expression expression, Type type, int argumentIndex, string parameterName) { try { return(ExpressionTypeUtility.EnsureCorrectType(expression, type)); } catch (InvalidOperationException ex) { var message = String.Format("The argument at index {0} has an invalid type: {1}", argumentIndex, ex.Message); throw new ArgumentException(message, parameterName, ex); } }