Проблема: при кэшировании экземпляра класса и немедленном извлечении его из кэша я возвращаю объект (не ноль), но все его свойства / поля имеют значение 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);
}
}
Как объект может сериализовать и десериализовать должным образом с помощью двоичного форматера и не делать точно то же самое с помощью кеширования?или у кого-нибудь есть какие-либо предложения или советы по поводу того, на что обращать внимание?