コード例 #1
0
        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
                          );
            }
        }
コード例 #2
0
        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));
        }