Dispose を明示的に呼び出していない呼び出し元を見つけるために、デバッグ プロセッサでファイナライザーを定義するのが正しいアプローチであるかどうか (すべてのリソースは管理されたリソースであるため、実際には必要ありません) かどうか疑問に思っています。その場合、ファイナライザーが呼び出され、Debug.Fail メッセージが発生します。
Public class Foo: IDisposable
{
...
public void Dispose()
{
Dispose(true);
#if DEBUG
GC.SuppressFinalization();
#endif
}
protected virtual void Dispose(bool disposing_)
{
if (disposing_)
{
// Unsubscribe from any event handlers, etc.
}
}
#if DEBUG
~ Foo()
{
Dispose(false);
Debug.Fail("Dispose was not invoked by caller"); // <--
}
#endif
}