Проблема: при кэшировании экземпляра класса и его немедленном извлечении из кеша я возвращаю объект (его не null), но все его свойства / поля имеют значение NULL или значения по умолчанию.
_cacheHelper.PutInCache("testModuleControlInfoOne", mci);
//mci has populated fields
var mciFromCacheOne = _cacheHelper.GetFromCache("testModuleControlInfoOne");
//mciFromCacheOne now has null or default fields
Поэтому я подозреваю, что проблема заключается в том, как структурирован объект, и по какой-то причине AppFabric не сериализует объект должным образом.
Однако, когда я использую следующий метод сериализации, я возвращаю объект со всеми свойствами / полями, как они были до сериализации.
public T SerializeThenDeserialize<T>(T o) where T : class
{
BinaryFormatter bf = new BinaryFormatter();
using (MemoryStream ms = new MemoryStream())
{
bf.Serialize(ms, o);
ms.Position = 0;
return (T)bf.Deserialize(ms);
}
}
Как можно правильно сериализовать и десериализовать объект, используя двоичный форматтер, и не делать то же самое при кэшировании?
Кто-нибудь сталкивался с этим или у кого-нибудь есть предложения или советы о том, на что в целом обращать внимание?