识别IDisposable对象

Dav*_*art 13 c# dispose memory-leaks idisposable using-statement

我必须检查一些其他人有一些内存泄漏的代码.现在我正在搜索一次性对象以使用using语句对它们进行包围,我想知道是否有一种快速方式告诉你所有声明的一次性对象.我的意思是像resharper或另一个visual studio插件.

谢谢.

Nei*_*ell 11

我明白你的意思.我不知道,但看看FxCop.它可能在某处有一个规则,用于检查是否未处理实现IDisposable的对象.只是预感,介意.

更新:Mitch Wheat写道:

FxCop包含规则,那就是说从实现IDisposable的类型派生的所有类型都应该实现Dispose()模式

谢谢,米奇.


Iga*_*nik 10

你可以用ReSharper做到这一点.使用ReSharper,您可以使用Alt-End轻松导航任何界面的实现,但是对于诸如此类的流行界面IDisposable是不实际的.

这是你可以做的:

  1. 转到对象浏览器(Ctrl-Alt-J或视图 - >对象浏览器)
  2. System.IDisposable
  3. 右键单击并选择"查找高级用法"(ReSharper的菜单项)
  4. 用户查找,选中"范围选择解决方案"下的"实施"
  5. 您将获得所有类型(您的解决方案)实施的列表IDisposable.那些粗体是你想要的 - 他们IDisposable直接实现.

希望有所帮助.


Wol*_*yrd 5

内FxCop的使用规则CA2213(DisposableFieldsShouldBeDisposed)和CA2215(DisposeMethodsShouldCallBaseClassDispose)将赶上那里处置未在自己的类称为正确,但我不相信有什么在那里检查处置总是叫讽刺意味的是,虽然有一个规则( CA2202)用于DoNotDisposeObjectsMultipleTimes