2008-11-07 82 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>添加到项目文件中。