2014-12-26 3 views
1

데이터베이스 연결에서 Dipose()의 동작을 확인하기 위해 .NET Framework 소스 코드를 탐색했습니다..NET Framework의 누락 된 메서드 소스 코드

그러나 SqlConnection에 대한 .NET Framework 소스 (+ 내가 다운로드 한 것입니다)는 SqlConnection에 정의 된 Dispose() 메서드가 없습니다. dotPeek를 사용

그러나, 나는 무엇을 놓치고

도록 SqlConnection

Dispose()의 구현을 볼 수 있습니까?

+0

Dispose 메서드에서 아무 것도 수행하지 않는 SqlConnection은 어디에서 볼 수 있습니까? http://referencesource.microsoft.com/#System.Data/System/Data/SqlClient/SqlConnection.cs,48932d2b804ed473 – Steve

+0

보고있는 내용을 추측하기는 어렵지만 Dispose() 메서드는 사용할 수 없습니다. 클래스는 IDisposable을 다시 구현하지 않으며 기본 클래스에서 상속 된 일회용 패턴을 사용합니다. [여기를보십시오] (http://referencesource.microsoft.com/#System.Data/System/Data/SqlClient/SqlConnection.cs,4b2c66bf1f6c12ee). 참조 소스가 System.Data에 대해 완전하지 않음을 명심하십시오.이 소스의 일부는 포함되지 않은 C++/CLI로 작성되었습니다. –

+0

@Steve 그 파일에서'Dispose()'의 정의는 어디에서 보시겠습니까? 단지'DisposeMe()'헬퍼 메소드를 포함하고'Dispose()'메소드는 포함하지 않습니다. ('SqlDebugContext.Dispose()'는 포함하지만'SqlConnection.Dispose()'는 포함하지 않습니다.) – hvd

답변

5

당신이 정말로 놓치고있는 모든 SqlConnection.cs 같이 SqlConnection을 정의하는 것입니다 a partial class. 즉, 다른 파일은 Dispose()을 포함하여 멤버 함수를 정의 할 수 있습니다. 이 파일은 Dispose() 멤버 함수를 정의하는 다른 파일 중 하나입니다.

DbConnectionHelper.cs을 살펴보십시오. 이것은 네임 스페이스 NAMESPACE에 클래스 CONNECTIONOBJECTNAME을 정의합니다. 이것들은 빌드시 올바른 클래스 이름과 네임 스페이스 이름으로 대체 될 것이고, 이것은 복수의 DbConnection 파생 클래스가 Dispose() 구현을 공유하게합니다.

+0

고마워요. 부분적 이었지만 다른 정의를 찾을 수 없었던 것으로 나타났습니다. 빌드시 생성되는 옵션을 고려하지 않았습니다. –

-1

IDisposable 인터페이스를 구현하는 클래스 만 Dispose (you will write you yourown) 메서드를 사용할 수 있습니다. 그것은 상속의 구성 요소

소스이기 때문에

도록 SqlConnection 클래스는 폐기 방법이 있습니다 here

그리고 당신은으로 IDisposable 인터페이스에 대한 자세한 내용을 확인할 수 있습니다 here