Для того чтобы классы могли использоваться с Memcached, им необходимо поддерживать двоичную сериализацию, это позволяет объектам преобразовываться в представление данных в виде плоских байтов, а затем передаваться на сервер Memcached и обратно.
В вашем примере вы используете XmlDocument
, который не является двоичным сериализуемым. Вы можете обойти это, преобразовав его в string
, который является двоичным сериализуемым:
MemcachedClient mc = new MemcachedClient();
XmlDocument xmlDocument = new XmlDocument();
mc.Store(StoreMode.Set, "foo", xmlDocument.OuterXml);
string myXml = mc.Get("foo");
XmlDocument xmlDocumentOut = new XmlDocument();
xmlDocumentOut.LoadXml(myXml);
Для собственных пользовательских классов необходимо добавить атрибут [Serializable]
и следовать указаниям для двоичной сериализации: Класс SerializableAttribute .