Detección de objetos IDisposibles "filtrados"

Hay muchas preguntas para preguntar cómo detectar fugas de objetos desechables. Parece que la respuesta es"no puedes".

Acabo de comprobar con el caso de prueba más trivial, que FxCop 10.0 no lo hace, ReSharper 4 con MSVS2010 no lo hace.

Esto me parece incorrecto, peor que pérdidas de memoria en C (para lo cual al menos hemos establecido herramientas para detectar).

Estaba pensando: ¿Es posible, usando la reflexión y otras técnicas avanzadas oscuras, que pueda inyectar un cheque en tiempo de ejecución, en el finalizador para ver siDispose ¿ha sido llamado?

¿Qué tal trucos de magia con WinDBG + SOS?

Incluso si no hay herramientas existentes para hacerlo, me gustaría saber si esto es teóricamente posible (mi C # no es muy nítido).

Ideas?

NOTA El título de esta pregunta podría haber sido engañoso. La verdadera pregunta aquí debería sersi unaIDisposable objeto ha sidoDisposed() correctamente. Ser eliminado por el GC no cuenta, ya que lo considero un error.

Editar: Solución: .NET Memory Profiler hace el trabajo. Solo necesitamos enviar varios spamGC.Collect() al final del programa para permitir que nuestro generador de perfiles recoja correctamente las estadísticas.

Respuestas a la pregunta(3)

Su respuesta a la pregunta