为什么ReSharper错误地报告“参数数量不正确”?

时间:2013-04-03 20:12:15

标签: visual-studio-2010 vb.net-2010 resharper-7.1

我正在使用Visual Studio 2010,项目在VB.NET中,我有ReSharper 7.1

错误地报告errors不仅仅是警告或建议。

lblAccountID.Text = AccountID.ToString()

ReSharper在ToString上给了我error,告诉我“参数数量不正确。”

AccountID的Type是我们创建的一个自定义类,它具有接受0参数的ToString重载,或者作为DisplayFormat的1个参数,或者作为另一个我们制作的另一个类型的displayformat的自定义类。由于某些原因,ReSharper只看到接受1个参数的2个重载,并认为接受0参数的重载不存在。我在13个不同的地方对这种类型的对象调用ToString,因此它报告了13种不同的错误,但代码编译并运行完全正常。没有错误,也没有让我选择忽略它。

我有办法解决这个问题吗?我真的不需要ReSharper告诉我他最初的这些错误,因为如果他们真的存在,Visual Studio会告诉我它们本身。


修改

我想出了如何重现这个问题,但这是一个奇怪的问题。我想,只是ReSharper中的一个错误。我在他们的问题跟踪器中报告了它。

这是重新创建它的最简单方法。在1个项目(ClassLibrary1)中:

Public Class Class1
  Public Overridable Overloads Function ToString(i As Integer) As String
    Return "Class1 - " & i.ToString()
  End Function

  Public Overloads Function ToString(s As String) As String
    Return "Class1 - " & s
  End Function
End Class

Public Class Class2
  Inherits Class1

  Public Overrides Function ToString(i As Integer) As String
    Return "Class2 - " & i.ToString()
  End Function

  Public Overloads Function ToString(f As Boolean) As String
    Return "Class2 - " & f.ToString()
  End Function
End Class

然后在新解决方案的新项目中(当两个项目都在同一个解决方案中时无法重新创建错误),添加对从第一个项目创建的DLL的引用。

Dim o As New Class2
Dim s As String = o.ToString()
s = o.ToString(s)

这两个ToString方法都是在Class2的基类或基类的基类中定义的,而ReSharper似乎无法找到它们,认为它们不存在,并将其标记为编译错误,即使它构建和跑得很好。

1 个答案:

答案 0 :(得分:0)

在Visual Studio中,如果您导航到ReSharper->选项,然后在代码检查下选择检查严重性,您应该可以通过选择项目右侧的“不显示”来关闭警告。请参见下面的截图。话虽如此,我无法找到问题文本中提到的具体错误,希望你会有更好的运气。

ReSharper Options