Работа с кешем

"сохраняю переменную в кэш:

int qty = 1; ctx.StoreObject(__key, qty);

при следующем пересчете скрипта загружаю:

object fv = ctx.LoadObject(__key); if (fv != null) volume = (int)fv; else ctx.Log("Volume not in cache!", MessageType.Warning);

И всегда мне печатается сообщение о том, что по данному ключу в кэше ничего нет. " ===

Нужно использовать класс NotClearableContainer и сохранять в кеше объекты, а не типы-значения, потому что получаются операции упаковки-преобразование и распаковки-преобразование.

class ScriptUserData
{
 public int Qty { get; set; }
}
...
Context.StoreObject(cashKey, new NotClearableContainer(new ScriptUserData{ Qty = qty }));
var cacheObj = m_context.LoadObject(cashKey);
if ((cacheObj is NotClearableContainer container) && (container.Content is ScriptUserData data))
{
 var qty = data.Qty;
}

Last updated