2011-04-12 4 views
1

ASP.NET 웹 응용 프로그램에는 Init 메서드와 Dispose 메서드 중 하나만 사용할 수 있습니까? 또는 이러한 메서드를 연결하려는 클래스에 대해 이러한 클래스를 구현할 수 있습니까?ASP.NET : Init 및 Dispose 메서드 구현

은 더 구체적으로 내가 Customer 구성 요소와 CustomerRecord 수업을하고 그들 모두 InitDispose 메소드를 구현하고 싶습니다.

이 작업을 수행하는 적절한 방법은 무엇입니까?

요구 사항 : 나는 각각의 상기 클래스에 대한 독립적 인 InitDispose 방법을 갖고 싶어

.

답변

1

퍼블릭 Dispose 메서드를 공개함으로써 클래스의 명시적인 사용자 처분 범위 밖에서 효과적인 'disposability'를 구현하려면 IDispsable 인터페이스를 구현해야합니다. 이것은 예를 들어, 여러 곳에서 including here을 여러 번 적용되었습니다

public class Customer : IDisposable 
{ 
    public void Dispose() 
    { 
     Dispose(true); 
     GC.SupressFinalize(this); 
    } 

    protected virtual void Dispose(bool disposing) 
    { 
     if (disposing) 
     { 
      //dispose of managed resources 
     } 
     //dispose of unmanaged resources 
    } 

    ~Customer() 
    { 
     Dispose(false); 
    } 
} 

참고 소멸자 (이 방법은 물결표 ~로 시작하는) 필요하지만 위의 링크 된 답변에서 자세한 내용을 읽을 수 있습니다 의 상황에 대한 명확성을 위해 무엇이유 -이 질문에 대한 답을 직접.

Init 방법의 경우 constructor을 언급하고 있습니까?

그렇다면 위의 예에서 소멸자를 살펴보십시오. 생성자 (또는 initialiser)은 예를 들어, 같은 방법으로 마이너스 일반적으로 물결과, 플러스 명시 적 액세스 한정자 (public, private, 등등)에서 정의 할 수 있습니다 :

public class Customer 
{ 
    public Customer() 
    { 

    } 
} 
0

원하는대로 Init 및 Dispose 메서드를 사용하여 기본 클래스를 만든 다음 다른 클래스를 기본 클래스로 상속하도록 만들 수 있습니다. 예 :

public class BaseClass 
{ 
    public void Init() 
    { 
     //Some code 
    } 

    public void Dispose() 
    { 
     //Some code 
    } 
} 

public class Customer : BaseClass 
{ 
    //Some code 
} 

도움이 될만한 자료입니다.

+0

내가 초기화 독립적 갖고 싶어하고 질문에 언급 된 각 클래스의 메서드를 처리하십시오. –

+0

일회용 클래스는 반드시 IDisposable을 구현해야합니다. 또한, 오버라이드 (override)되거나 확장되는 메소드는'virtual' 수식 자로 적절히 표시되어야합니다. –

+0

@ Mr. 실망 예! 나는 잊었다! –

관련 문제