我必须检查一些其他人有一些内存泄漏的代码。现在我正在搜索一次性对象以使用using语句对它们进行包围,我想知道是否有一种快速方式告诉你所有声明的一次性对象。我的意思是像resharper或另一个visual studio插件。< / p>
感谢。
答案 0 :(得分:11)
我知道你的意思。我不知道,但看看FxCop。它可能在某处有一个规则,用于检查是否未处理实现IDisposable的对象。只是预感,记住。
更新:Mitch Wheat写道:
FxCop包含规则,那就是说从实现IDisposable的类型派生的所有类型都应该实现Dispose()模式
谢谢,米奇。
答案 1 :(得分:10)
您可以使用ReSharper执行此操作。使用ReSharper,您可以使用Alt-End轻松导航任何界面的实现,但对于IDisposable
这样的流行界面,这是不切实际的。
以下是您可以做的事情:
System.IDisposable
IDisposable
的所有类型(您的解决方案)的列表。 粗体中的那些是您想要的 - 他们直接实现IDisposable
。希望有所帮助。
答案 2 :(得分:5)
FxCop中的使用规则CA2213(DisposableFieldsShouldBeDisposed)和CA2215(DisposeMethodsShouldCallBaseClassDispose)将捕获在您自己的类中未正确调用dispose的位置,但我不相信有任何东西可以检查dispose总是被调用虽然具有讽刺意味DoNotDisposeObjectsMultipleTimes
的规则(CA2202)答案 3 :(得分:0)
此外,根据您是否使用这样的系统,如果您使用的是IoC容器,在通过接口将服务返回给您之前,它可能会经历多层代码,并且处理它可能并不容易。在这种情况下可以使用。
您解决的接口可能不是从IDisposable继承的,但是正在使用的实际服务类是什么?怎么处理?等