gpt4 book ai didi

c# - 序列化表达式树

转载 作者:行者123 更新时间:2023-12-01 21:35:07 25 4
gpt4 key购买 nike

我正在用 C# 做一个分布式系统,并且遇到了障碍。

我需要能够序列化类型的谓词

Predicate<ICollection<IEntity>> p = (entities => entities.OfType<Person>().Count() <= 3);

我相信这在 .net 中是不可能的,所以我的问题是是否存在任何可以做到这一点的框架。

我已经尝试了几个框架,但不断遇到问题,它们无法序列化采用集合或列表的谓词

希望有人知道解决方案。已经被这个问题困扰了几个星期了......

最佳答案

我的解决方案:

在解决了这个问题很长一段时间后,我终于设法使用 json.net 和 Aq.ExpressionJsonSerializer 解决了我的问题( https://github.com/aquilae/expression-json-serializer )

public class JsonNetAdapter : IOconSerializer
{
private readonly JsonSerializerSettings _settings;

public JsonNetAdapter(JsonSerializerSettings settings = null)
{
var defaultSettings = new JsonSerializerSettings {TypeNameHandling = TypeNameHandling.Objects};
defaultSettings.Converters.Add(new ExpressionJsonConverter(Assembly.GetAssembly(typeof(IOconSituation))));
_settings = settings ?? defaultSettings;
}

public string Serialize<T>(T obj)
{
return JsonConvert.SerializeObject(obj, _settings);
}

public T Deserialize<T>(string json)
{
return JsonConvert.DeserializeObject<T>(json, _settings);
}
}

工作起来就像一个魅力!

关于c# - 序列化表达式树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23253399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com