/// <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)); }
/// <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>); }