序列化lambdaexpression tos tos tos tos tos toct tern string保存在数



是否可以序列化 Expression<T>LambdaExpression?我需要将表达树保存在数据库(varchar列(中。

var expr = (LambdaExpression)expression;
if (expr != null)
{   
    var newBody = Expression.Convert(expr.Body, typeof(string));
    var expr2 = Expression.Lambda(newBody, expr.Parameters);
    var castedExpression = expr2 as Expression<Func<ShipmentViewModel, string>>;
    Func = castedExpression.Compile();
}

我想重建LambdaExpression,对其进行编译并重复使用。目前,我找不到任何解决方案。

表达式不可序列。但是,有一些第三部分的工具可能会有所帮助。

我建议查看serialize.linq。它是最新的,维持的,具有健康的下载次数,并且将支持.NET Framework 4.x以及.NET标准。

从示例中,使用也很容易:

Expression expression = Expression.Parameter(typeof(Person), "x");
// Serialize expression
var serializer = new ExpressionSerializer(new JsonSerializer());
string value = serializer.SerializeText(expression);
Console.WriteLine("value:" + value);
// Deserialize expression
var actualExpression = serializer.DeserializeText(value);
Console.WriteLine("actualExpression:" + actualExpression.ToJson());

最新更新