我正在使用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似乎无法找到它们,认为它们不存在,并将其标记为编译错误,即使它构建和跑得很好。
答案 0 :(得分:0)
在Visual Studio中,如果您导航到ReSharper->选项,然后在代码检查下选择检查严重性,您应该可以通过选择项目右侧的“不显示”来关闭警告。请参见下面的截图。话虽如此,我无法找到问题文本中提到的具体错误,希望你会有更好的运气。