2010-06-10 4 views
1

UserControl이 포함 된 WebProject에서 FxCop을 실행하면 해당 UserControl의 모든 ServerControl (Label, TextBox, ...)에 대해 CA2000 경고 (System.IDisposable.Dispose 호출)가 발생합니다.UserControls의 FxCop CA2000 경고

나는 이것이 일어나는 이유를 이해합니다.
'해로운'ServerControl을 PlaceHolder로 바꾸고 코드에서 컨트롤을 사용하여 (Using ... End Using) 그럴 수 있지만 항상 옵션이되는 것은 아닙니다.
하지만, '정결하지 않은'이유가 있다면 ServerControls를 처음부터 ascx/aspx에 놓을 수 있습니까?
내가 누락 된 것이 있습니까?

내 경우처럼 상당히 복잡한 UserControls 컬렉션을 상속 받았다면 이제는 모든 불쾌감을주는 컨트롤을 GlobalSupperssions 파일에 추가합니까 (마우스 오른쪽 단추를 클릭하면 마음이 무거워집니다)?
UserControls에서 ServerControls의 경우를 제외하고는 모든 CA2000 경고를 수정하지 않는 것이 좋습니다.

+0

아마도 뭔가가 빠졌을 것입니다 만, dispose (글쎄, dispose (bool) i 추측)를 오버라이드하지 않고 usercontrol에 포함 된 서버 컨트롤을 처리해야합니까? 경고는 당신이 트리를 처분하지 않는 '계단식'이 아니라면 의미가있는 것 같습니다. –

답변

0

안녕하세요, 모두 에는 Dispose()를 (를) 잊어 버렸음을 알리는 도구가 있습니다. 문제는 그러한 도구가 실제로 구현하기 어렵다는 것입니다. 당신이 말하는 특정 경고는 이제 몇 번 무력화되고 다시 활성화됩니다.

분명히 당신이 가진 경고는 난센스 다. UserControl은 이미 멤버 컨트롤을 올바르게 처리하는 방법을 알고있다. 자동화 된 도구로 쉽게 감지 할 수있는 것은 아닙니다. 처분 된 호출은 생성자 호출에서 1 백만 마일이 제거되어 .NET 프레임 워크 코드에 두 개의 가상 메서드와 이벤트 처리기가 포함되어 있습니다.

정말로은 이러한 경고를 평가하기 위해 귀와 귀 사이의 다른 도구로 전환해야합니다.

+0

고마워요, 당신은 내 귀 사이에 무엇이 있는지를 거의 확인합니다. – esjr