/// <summary>
        /// Extension method for <see cref="SerializableExpression"/>.
        /// Returns <see cref="Expression"/>.
        /// </summary>
        /// <param name="exp">Serializable expression to convert</param>
        /// <returns>Returns <see cref="Expression"/>.</returns>
        public static Expression Deserialize(this SerializableExpression exp)
        {
            // http://interlinq.codeplex.com/discussions/60896
            var fakeHandler = new ClientQueryHandler();
            var visitor     = new SerializableExpressionConverter(exp, fakeHandler);

            return(visitor.Visit(exp));
        }
예제 #2
0
        /// <summary>
        /// Deserializes the specified xml to an <see cref="Expression"/>.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="xml"></param>
        /// <returns></returns>
        public static Expression <T> DeserializeExpression <T>(string xml)
        {
            if (string.IsNullOrEmpty(xml))
            {
                throw new ArgumentNullException("xml");
            }

            SerializableExpression          expression = Deserialize <SerializableExpression>(xml);
            SerializableExpressionConverter converter  = new SerializableExpressionConverter(expression, new DummyQueryHandler());

            return(converter.Visit(expression) as Expression <T>);
        }