Me encanta WeakReference's. Pero me gustaría que hubiera una manera de decirle al CLR cuánto (por ejemplo, en una escala del 1 al 5) qué tan débil considera que es la referencia. Eso sería genial.¿Por qué .NET no tiene una referencia suave sino también una referencia débil, como Java?
Java tiene SoftReference, WeakReference y creo que también un tercer tipo llamado "referencia ficticia". Son 3 niveles allí donde el GC tiene un algoritmo de comportamiento diferente para decidir si ese objeto recibe el corte.
Estoy pensando en subclasificar la. WeakReference de .NET (afortunadamente y ligeramente bizarramente no está sellada) para hacer una pseudo-SoftReference que se basa en un temporizador de vencimiento o algo así.
Tal vez si explica qué problema está tratando de resolver, quizás obtenga algunas respuestas con buenas soluciones. Por lo general, no es una buena idea trabajar en este nivel de granularidad y es más apropiado algún tipo de caché de espiración, pero todo depende del problema. –