Я сталкивался с чем-то похожим раньше. Моей первой мыслью было создание подкласса DetachedCriteria
, чтобы вы могли сами предоставить конструктор по умолчанию. Тем не менее, после изучения класса DetachedCriteria
я не думаю, что это сработает. Причина в том, что класс CriteriaImpl
, используемый внутри DetachedCriteria
, также не имеет конструктора по умолчанию.
Глядя на 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();