public Expression CastMethod(CastMethod method, LiteralExpression[] arguments) { Debug.Assert(arguments[1].LiteralType == LiteralType.String); if (arguments[0].LiteralType == LiteralType.Null) { return(arguments[0]); } var type = LiteralUtil.GetCompatibleType((string)arguments[1].Value); try { return(new LiteralExpression(Convert.ChangeType(arguments[0].Value, type, CultureInfo.InvariantCulture))); } catch (Exception ex) { throw new ODataException( String.Format( ErrorMessages.Method_CannotCast, arguments[1].Value ), ex ); } }
public Expression IsOfMethod(IsOfMethod method, LiteralExpression[] arguments) { Debug.Assert(arguments[1].LiteralType == LiteralType.String); var type = LiteralUtil.GetCompatibleType((string)arguments[1].Value); return(new LiteralExpression(type.IsInstanceOfType(arguments[0].Value), LiteralType.Boolean)); }