我必须查看其他人编写的代码,该代码有一些内存泄漏。现在我正在搜索一次性对象以使用 using 语句将它们包含在内,我想知道是否有一种快速方法可以告诉您声明的所有一次性对象。我的意思是像 resharper 或其他 Visual Studio 插件。
谢谢。
我必须查看其他人编写的代码,该代码有一些内存泄漏。现在我正在搜索一次性对象以使用 using 语句将它们包含在内,我想知道是否有一种快速方法可以告诉您声明的所有一次性对象。我的意思是像 resharper 或其他 Visual Studio 插件。
谢谢。
我明白你的意思。我不知道,但看看 FxCop。它可能在某处有一条规则来检查实现 IDisposable 的对象是否未释放。只是一种预感,请注意。
更新:米奇小麦写道:
FxCop 包含规则,也就是说,从实现 IDisposable 的类型派生的所有类型都应该实现 Dispose() 模式
谢谢,米奇。
你可以用ReSharper做到这一点。使用 ReSharper,您可以使用 Alt-End 轻松导航任何接口的实现,但对于像IDisposable
这样的流行接口是不切实际的。
这是你可以做的:
System.IDisposable
IDisposable
。粗体字是你想要的——它们IDisposable
直接实现。希望有帮助。
使用规则 FxCop 中的 CA2213 (DisposableFieldsShouldBeDisposed) 和 CA2215 (DisposeMethodsShouldCallBaseClassDispose) 将捕获您自己的类中未正确调用 dispose 的位置,但我不相信有任何东西可以检查 dispose 总是被调用,尽管具有讽刺意味的是有一个规则( CA2202) 用于 DoNotDisposeObjectsMultipleTimes
此外,根据您是否使用这样的系统,如果您使用的是 IoC 容器,它可能会在服务通过接口返回给您之前经过几层代码,并且在这种情况下处理 IDisposable 可能并非易事一个案例。
也许您解析的接口不是从 IDisposable 继承的,但实际使用的服务类会继承吗?如何处理?等等