2009-07-06 45 views

回答

6

Visual Studio中,本身並不具備這一功能,但CodeRush你可以有設計時的警告和重構使用塊在需要的地方插入。

1

我不認爲它可以在編譯時完成。

但是,它可以在運行時完成。
我創建了一個抽象類'Disposable'(它實現了IDisposable,並實現了Disposable模式)。 在終結器中,當調用終結器時,我發出一個Assert,並且該對象尚未處理。

我已經根據這個伊恩·格里菲思的文章:

http://www.interact-sw.co.uk/iangblog/2004/04/26/yetmoretimedlocking

+1

我會反對其處理處置基類。由於.NET是單繼承,因此這會將您鎖定到一個非常嚴格的繼承鏈,這需要您的DisposeBase位於頂端。 – 2009-07-06 19:13:50

+0

除此之外,您可以使用「System.ComponentModel.Component」 – 2009-07-06 19:26:54

0

我不知道,如果你正在使用C#或VB,但在C#中,「最佳實踐」的方式處理IDisposable類型的對象是將代碼放置在使用塊中。

「using語句允許程序員指定何時使用資源的對象應該釋放它們,提供給using語句的對象必須實現IDisposable接口,該接口提供了Dispose方法,該方法應釋放對象的資源。 - MSDN Link

HTH,

-Dan

+3

這不以任何方式回答問題。 – 2009-07-06 19:19:34

+0

如果我創建一個實現IDisposable的對象,然後忘記將它放在使用塊中,Visual Studio 2008可以配置爲給我一個警告嗎? – ChrisW 2009-07-06 19:28:18

2

如果你打開FxCop的設計規則,它會告訴你,當你不實現IDisposable,你有哪些實現IDisposable成員,像這樣:

class Program 
{ 
    private DataTable NotDisposed; 

    public Program() 
    { 
     NotDisposed = new DataTable(); 
    } 
    static void Main() 
    { 
    } 
} 
相關問題