2008-11-07 3 views
6

I가 이제 기본 클래스에서 상속 다음과 같은 구현하는 클래스 ...VS2005 (VB.Net)의 특정 기능에 대한 경고 컴파일러를 억제하는 방법

Public Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo 

그것은 또한 상속 기본 클래스 이 System.IComparable.CompareTo을 구현하므로 다음 컴파일러 경고가 표시됩니다.

경고 : 'System.IComparable.CompareTo'는 이미 기본 클래스에서 구현됩니다. 함수의 재 구현이 가정됩니다.

내 질문에 어떻게하면이 경고 (예 : 모든 경고가 아닌)에 대해이 경고를 표시하지 않도록 할 수 있습니다.

추가 설명 : 여기

  • 는 MSDN에 오류에 link이다.
  • 나는 Shadows와 Overrides를 이미 시도해 봤으며 경고를 제거하지 못했습니다.
  • 경고는 메서드 자체에 없으며 (그림자 나 재정의가 생략되지 않은 경우), "Implements System.IComparable.CompareTo"에 있습니다.
  • 이 유형의 모든 경고를 표시하지 않으려 고합니다 (자르면이 경고 만 표시).

솔루션 : 나는 C#의의 #pragma 같은 System.Diagnostics.CodeAnalysis.SuppressMessage 속성 또는 무언가를 사용하기를 바라고 있지만, 한 줄에 대한 경고를 억제 할 수있는 방법이 없습니다처럼 보이는 한
. 그래도이 프로젝트를 위해이 메시지를 끄는 방법이 있습니다. 모두 경고를 끄지 않아도됩니다.

수동으로 .vbproj 파일을 편집하고 디버그 및 릴리스 컴파일을위한 노드에 42015를 포함 시켰습니다. 이상적인 것은 아니지만 항상 IDE에서 경고를 보는 것보다 낫습니다.

누군가가 더 나은 해결책을 가지고 있다면 그것을 추가하십시오. 나는 기꺼이 답을 표시하려고합니다.

답변

9

만 기본 클래스에 '이물질'을 사용

기본 클래스에서

서명 :

상속 된 클래스
Public Overridable Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo 

서명 :

Public Overrides Function CompareTo(ByVal obj As Object) As Integer 
+1

유일한 정답입니다. 경고 텍스트는 이것을 의미합니다. 즉, "가정"이 의미하는 것입니다. 즉, 인스턴스가 상속 된 클래스 인 경우 올바른 메서드가 호출되도록 오버라이드만으로 보장 할 수 있지만 매우 명확하지는 않습니다. – McKenzieG1

-1

프로젝트 속성에서 빌드 탭으로 이동하여 억제 경고 텍스트 상자를 사용하십시오.

+0

이 프로젝트에 대한 모든 경고를 표시하지 않으려 고합니다. –

+0

메시지 코드를 표시하지 않도록 지정할 수 있기 때문에 모든 메시지를 표시하지 않습니다. 아래 내 대답을 확인하십시오. –

-1

키워드 그림자를 함수 정의에 추가하십시오.

Public Shadows Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo 
+0

그림자와 무시를 모두 시도했지만 불행히도 경고를 제거하지 마십시오. –

-1

경고를 표시하는 대신 수정해서는 안됩니까?

Public Overrides Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo 

하지 않으면, 다음, 그것을 그림자

Public Shadows Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo 

(나는 C#을 프로그래머가 생각이 올바른 생각합니다. 그렇지 않으면, 코멘트 및 I 업데이트하겠습니다, 기본이 재정의 가정하면)

+0

두 그림자 및 무시를 모두 시도했지만 불행히도 경고를 제거하지 마십시오. –

1

단지 경고를 억제하기 위해 강제 인쇄 경고를 사용할 수 있습니다. 방법은 여기 more을 참조하십시오. SuppressMessage Attribute을 사용할 수도 있습니다.

0

것은 당신이없는 경우 기본 클래스에 액세스 할 수 없으므로 오버라이드 가능한 메서드를 만들 수 없으면 <NoWarn>42015</NoWarn>을 프로젝트 파일에 추가 할 수 있습니다.

관련 문제