使用nHibernate序列化DetachedCriteria

我正在尝试序列化DetachedCriteria,以便我可以将其保存在数据库中,并在以后重用相同的标准。 当我运行下面的代码时,我得到“NHibernate.Criterion.DetachedCriteria无法序列化,因为它没有无参数构造函数”。

DetachedCriteria criteria1 = DetachedCriteria.For("so") .Add(Expression.Eq("ObjectCode", "1234")); XmlSerializer s = new XmlSerializer(typeof(DetachedCriteria)); TextWriter writer = new StringWriter(); s.Serialize(writer, criteria1); writer.Close(); 

有没有什么好方法可以序列化DetachedCriteria?

我之前遇到过类似的事情。 我的第一个想法是将DetachedCriteria子类化,因此您可以自己提供默认构造函数。 但是,在挖掘DetachedCriteria类之后,我认为这不会起作用。 原因是DetachedCriteria内部使用的CriteriaImpl类也缺少默认构造函数。

查看XmlSerializer,如果您的对象没有默认构造函数,它看起来不会起作用。

然而,我遇到了这篇文章:

如何序列化NHibernate DetachedCriteria对象?

基于此,这可能有用(但我没有测试过):

 // Convert the DetachedCriteria to a byte array MemoryStream ms = new MemoryStream(); IFormatter formatter = new BinaryFormatter(); formatter.Serialize(ms, detachedCriteria); // Serialize the byte array XmlSerializer s = new XmlSerializer(typeof(byte[])); TextWriter writer = new StringWriter(); s.Serialize(writer, ms.Buffer); writer.Close();