覆盖ToString不会在调试中显示

时间:2010-04-07 09:40:30

标签: .net vb.net debugging

我的收藏类似于:

Public Class MyCollection
    Inherits ObservableCollection(Of MyCollection)

    Private _Name As String

    Public Property Name() As String
        Get
            Return _Name
        End Get
        Set(ByVal value As String)
            _Name = value
        End Set
    End Property

    Public Overrides Function ToString() As String
        Return "Name: " & _Name
    End Function

End Class

我已经覆盖了ToString方法以帮助调试,但它没有显示出来。

在下面的代码中,如果在调试期间我将鼠标移到 coll 上,它会显示 Count = 0

Private Sub Window1_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded    
        Dim coll As New MyCollection    
        coll.Name = "Test"        
    End Sub

你知道可能是什么问题吗?

编辑:我知道我可以使用 DebuggerDisplay ,但遗憾的是它非常有限。实际上这个类非常复杂,如果可能的话,我需要有可能在调试过程中定义一个逻辑。

2 个答案:

答案 0 :(得分:2)

您需要为MyCollection类设置一个Debugger属性 - 在C#中我会这样做  [DebuggerDisplay("Name:={Name}")]

在Visual Basic中执行此操作,

<DebuggerDisplay("Name: {Name}")>

答案 1 :(得分:1)

DebuggerDisplay属性是您的问题,您的类继承了Collection(Of T)基类上指定的类。让它开始再次使用ToString()覆盖很简单,只需使它看起来像这样:

<DebuggerDisplay("{ToString()}")> _
Public Class MyCollection
  Inherits ObservableCollection(Of MyElementClass)
  REM etc...
End Class