我的收藏类似于:
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 ,但遗憾的是它非常有限。实际上这个类非常复杂,如果可能的话,我需要有可能在调试过程中定义一个逻辑。
答案 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