【发布时间】:2020-09-01 12:36:49
【问题描述】:
我正在使用Remote.Linq 序列化/反序列化我的表达式,因为我想创建将动态表达式 从客户端应用程序发送到我们的网络服务的能力。标准 .NET 表达式无法序列化,因此我使用 Remote.Linq 代替。
但是,我看不到如何执行 表达式。通常我会调用 Compile() 和 Invoke() 方法来针对数据执行 Expression。但 Remote.Linq 表达式不支持此类方法。
以下单元测试可以更清楚地解释我想要实现的目标。
[TestMethod]
public void SerializeLinqExpressionsTests()
{
var testdata = GetTestdata();
Expression<Func<ModuleEntityAdmins, ModuleEntityAdmin>> expr1 = m => m.Modules.Find(q => q.Id == 1);
var remoteExpression1 = expr1.ToRemoteLinqExpression();
string strexpr1 = SerialiseExpression(remoteExpression1);
try
{
var deserexpr1 = DeserialiseExpression<Remote.Linq.Expressions.LambdaExpression>(strexpr1.NormalizeJsonString());
//what is the equivalent of doing this with a Remote.Linq Expression?
var compiled1 = expr1.Compile();
var result = compiled1.Invoke(testdata);
Assert.IsNotNull(result);
Assert.IsTrue(result.Id == 1);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Assert.Fail("Error deserialising LINQ expression tree");
}
}
如何调用 Remote.Linq 表达式?
【问题讨论】:
标签: serialization deserialization json-deserialization