Detectando objetos descartáveis de ID "vazados"

Existem muitas perguntas para perguntar como detectar vazamentos de objetos IDisposable. Parece que a resposta é"você não pode".

Acabei de verificar com o caso de teste mais trivial, que o FxCop 10.0 não faz, o ReSharper 4 com MSVS2010 não faz.

Isso me parece errado, pior do que vazamentos de memória em C (pelo qual pelo menos estabelecemos ferramentas para detectar).

Eu estava pensando: É possível, usando reflexão e outras técnicas avançadas obscuras, que eu possa injetar uma verificação em tempo de execução, no finalizador, para ver seDispose tem sido chamado?

Que tal truques de mágica com o WinDBG + SOS?

Mesmo se não houver ferramentas para fazer isso, eu gostaria de saber se isso é teoricamente possível (meu C # não é muito nítido).

Idéias?

NOTA O título desta pergunta pode ter sido enganador. A verdadeira questão aqui deve serse umIDisposable objeto foiDisposed() devidamente. Ser descartado pelo GC não conta, já que considero isso um erro.

Editar: Solução: O .NET Memory Profiler faz o trabalho. Só precisamos enviar spam para váriosGC.Collect() no final do programa, para permitir que nosso criador de perfis receba as estatísticas corretamente.

questionAnswers(3)

yourAnswerToTheQuestion