代码之家  ›  专栏  ›  技术社区  ›  Drake

重写的ToString不显示在debug中

  •  0
  • Drake  · 技术社区  · 16 年前

    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方法,但它没有出现。

    在下面的代码中,如果在调试期间将鼠标移到 它给我看

    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
    

    编辑: 我知道我可以用 调试程序显示 不幸的是,它是非常有限的。实际中的类是非常复杂的,如果可能的话,我需要在调试过程中定义一个逻辑。

    2 回复  |  直到 16 年前
        1
  •  1
  •   Hans Passant    16 年前

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

    <DebuggerDisplay("{ToString()}")> _
    Public Class MyCollection
      Inherits ObservableCollection(Of MyElementClass)
      REM etc...
    End Class
    
        2
  •  2
  •   Konrad Rudolph    16 年前

    您需要为类MyCollection设置一个调试器属性—在C中,我愿意这样做 [DebuggerDisplay("Name:={Name}")]

    要在Visual Basic中执行此操作,

    <DebuggerDisplay("Name: {Name}")>
    
    推荐文章