2013-12-11 2 views
1

IDisposable 인터페이스를 구현하는 이름이 A 인 클래스가 있다고합시다. 우리가 그것을 사용 때, 우리는 쓰기 : 우리가 내 경우에는 실제로 다른 클래스의 많은 방법의 모듈 잡고 비즈니스 로직의 클래스이다를 ClassA를 wantuse클래스에서 IDisposable 개체를 여러 번 사용하는 것이 더 좋은 방법

using(classA cA = new 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가이

class B : IDisposable { 

    private classA cA; 

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

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

는 IDisposable

을 구현할 수 있도록하는 것입니다하지만 당신은 다음 당신이 얻을 것 모르겠어요 그래서 사용하여 ClassB가 모든 호출을 포장해야합니다.