protected override async Task ClientSendQueryAsync(Expression expression, object argument) { if (argument != null) { await SendMessageAsync(QbservableProtocolMessageKind.Argument, argument).ConfigureAwait(false); } var converter = new SerializableExpressionConverter(); await SendMessageAsync(QbservableProtocolMessageKind.Subscribe, converter.Convert(expression)).ConfigureAwait(false); }
/// <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>); }
protected override Expression GetExpressionFromMessage(StreamMessage message) => SerializableExpressionConverter.TryConvert(Deserialize <SerializableExpression>(message));