Ниже приведен пример кода нашего приложения, в котором мы пытаемся сохранить слабую ссылку на огромный объект модели страницы, который занимает много памяти.
Dictionary<int,WeakReference> modelCache;
IPageModel ReadPageModel()
{
IPageModel page;
if (!modelCache.ContainsKey(cacheKey) || !modelCache[cacheKey].IsAlive)
{
model = new PageModel();
modelCache[cacheKey] = new WeakReference(Model);
}
else
{
model = modelCache[cacheKey].Target as IPageModel;
}
return model;
}
Модель, которую мы возвращаем(в другой части) является ссылкой на слабый объект, поэтому он может быть нулевым в более позднее время.
Есть ли способ, чтобы мы могли создать сильную ссылку на этот объект, и позже, когда мысделав объект, мы можем сделать его слабой ссылкой.
Я сталкивался с некоторыми примерами, когда слабые ссылки конвертируются в сильные, но не наоборот.