2008-11-07 171 views
6

我有一個從基類繼承並實現以下一類...如何抑制編譯器在VS2005(VB.Net)特定功能警告

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

現在的基類它也繼承實現此System.IComparable.CompareTo所以我得到以下編譯器警告:

警告:'System.IComparable.CompareTo'已由基類實現。重新實現功能假設。

我很好,所以我的問題是我怎樣才能抑制這個警告只是這個功能(即不是所有這樣的警告)。

澄清:

  • 這裏是一個link MSDN上的錯誤。
  • 我已經嘗試了陰影和覆蓋,既不消除警告。
  • 警告不在方法本身上(除非Shadows或Overrides被省略),而是它特別在「Implements System.IComparable.CompareTo」上。
  • 我不打算壓制這種類型的所有警告(如果他們出現),只是這一個。

解決方案:
我希望使用System.Diagnostics.CodeAnalysis.SuppressMessage屬性或類似的C#的#pragma東西,但看起來像有沒有辦法抑制單個行警告。有一種方法可以關閉此項目的信息,但不會將全部警告關閉。

我手動編輯了.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

在項目的屬性上,轉到生成選項卡並使用壓制警告文本框。

+0

我不打算壓制這個項目的所有警告,只是這一個。 – 2008-11-07 19:30:54

+0

由於您可以使用消息代碼指定壓制,因此您不會壓制所有消息。請在下面查看我的回覆。 – 2008-11-20 14:17:00

-1

將關鍵字陰影添加到函數定義中。

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

嘗試了陰影和覆蓋,不幸的是不要刪除警告。 – 2008-11-07 19:26:45

-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#程序員。如果沒有,請發表評論,我會更新)

+0

嘗試陰影和覆蓋,不幸的是刪除警告。 – 2008-11-07 19:29:11

0

如果沒有訪問基類並因此無法使方法Overrideable,您可以將<NoWarn>42015</NoWarn>添加到項目文件中。