問題:クラスのインスタンスをキャッシュしてすぐにキャッシュから戻すと、オブジェクトは元に戻ります(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);
}
}
オブジェクトがバイナリフォーマッタを使用して適切にシリアル化および逆シリアル化する方法と、キャッシングを介してまったく同じことを行わない方法はありますか?
誰かがこれに遭遇したことがありますか、または誰かが一般的に何に注意すべきかについての提案やヒントがありますか?