Я очень люблю WeakReference. Но хотелось бы, чтобы был способ указать CLR, насколько (скажем, по шкале от 1 до 5) слабой вы считаете ссылку. Это было бы блестяще.
В Java есть SoftReference, WeakReference и, я думаю, также третий тип, называемый «фантомной ссылкой». Это 3 уровня, для которых GC имеет другой алгоритм поведения при принятии решения о том, получит ли этот объект отбивную.
Я думаю о подклассе WeakReference .NET (к счастью и немного странно, что он не запечатан), чтобы создать псевдо-SoftReference, основанный на таймере истечения срока действия или что-то в этом роде.