簡體   English   中英

識別IDisposable對象

[英]Identify IDisposable objects

我必須檢查一些其他人有一些內存泄漏的代碼。 現在我正在搜索一次性對象以使用using語句對它們進行包圍,我想知道是否有一種快速方式告訴你所有聲明的一次性對象。我的意思是像resharper或另一個visual studio插件。

謝謝。

我明白你的意思。 我不知道,但看看FxCop。 它可能在某處有一個規則,用於檢查是否未處理實現IDisposable的對象。 只是預感,介意。

更新Mitch Wheat寫道:

FxCop包含規則,那就是說從實現IDisposable的類型派生的所有類型都應該實現Dispose()模式

謝謝,米奇。

你可以用ReSharper做到這一點。 使用ReSharper,您可以使用Alt-End輕松導航任何界面的實現,但對於像IDisposable這樣的流行界面,這是不切實際的。

這是你可以做的:

  1. 轉到對象瀏覽器(Ctrl-Alt-J或視圖 - >對象瀏覽器)
  2. 查找System.IDisposable
  3. 右鍵單擊並選擇“查找高級用法”(ReSharper的菜單項)
  4. 用戶查找,選中“范圍選擇解決方案”下的“實施”
  5. 您將獲得實現IDisposable所有類型(您的解決方案)的列表。 那些粗體是你想要的 - 他們直接實現IDisposable

希望有所幫助。

FxCop中的使用規則CA2213(DisposableFieldsShouldBeDisposed)和CA2215(DisposeMethodsShouldCallBaseClassDispose)將捕獲在您自己的類中未正確調用dispose的位置,但我不相信有任何東西可以檢查dispose總是被調用雖然具有諷刺意味的是有規則( CA2202)用於DoNotDisposeObjectsMultipleTimes

此外,根據您是否使用這樣的系統,如果您正在使用IoC容器,它可能會在服務通過接口返回給您之前經過多層代碼,並且在這樣的情況下處理IDisposable可能並不容易。一件事。

也許你解決的接口不是從IDisposable繼承的,但是使用的實際服務類呢? 怎么處理? 等等

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM