我正在用 C# 做一个分布式系统,并且遇到了障碍。
我需要能够使用类型序列化谓词
Predicate<ICollection<IEntity>> p = (entities => entities.OfType<Person>().Count() <= 3);
我相信这在 .net 中是不可能的,所以我的问题是是否存在任何可以做到这一点的框架。
我已经尝试了几个框架,但不断遇到问题,它们无法序列化采用集合或列表的谓词
希望有人知道解决办法。已经被这个问题困扰了几个星期了......
我的解决方案:
将问题搁置了很长时间后,我终于设法使用 json.net 和 Aq.Expression JsonSerializer 解决了我的问题(https://github.com/aquilae/expression-json-serializer 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);
}
}
奇迹般有效!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)