2013-12-11 59 views
1

假設我們有一個名稱爲A的類實現了IDisposable接口。所以,當我們 使用它,我們寫:在課堂上多次使用IDisposable對象的更好方法

using(classA cA = new classA()) 
{ 

} 

讓我們wantuse ClassA的,這實際上是在我的情況在模塊支承業務邏輯的類,在另一個類中的許多方法。有沒有辦法避免在所有這些編碼中使用上述編碼?

換句話說,有沒有比以下更好的方法來使用classA?

class B 
{ 

    // properties 

    // constructors 

    // methods 

    public void methodA() 
    { 
     using(classA cA = new classA()) 
     { 
      // code goes here 
     } 
    } 

    public void methodB() 
    { 
     using(classA cA = new classA()) 
     { 
      // code goes here 
     } 
    } 

    public void methodC() 
    { 
     using(classA cA = new classA()) 
     { 
      // code goes here 
     } 
    } 
} 

在此先感謝您的幫助。

回答

4

使類B實施IDisposable

創建B一個的A實例的構造(或懶惰地在第一次使用創建的話),將其存儲在一個字段,並在類B處置它的Dispose方法。

2

這確實取決於你需要ClassA的時間有多短。

一種選擇將是使ClassB的實現IDisposable

class B : IDisposable { 

    private classA cA; 

    public B() { 
     cA = new classA(); 
    } 

    public void Dispose() { 
     if (cA != null) { 
      cA.Dispose(); 
      cA = null; 
     } 
    } 
} 

但那麼你就需要換到ClassB的所有調用與使用,所以我不知道你會得到什麼。