2010-04-07 62 views
0

显示我有类似的集合:Overrided的ToString不调试

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 

我已经overrided ToString方法,以便在调试帮助,但它并没有显示出来。

如果在调试过程中,我将鼠标移动到科尔下面的代码它表明我计数= 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

如果你在监视窗口中添加coll.ToString(),这是什么节目? – Paddy 2010-04-07 09:42:57

+0

@paddy是的,它显示 – Drake 2010-04-07 09:48:09

回答

1

DebuggerDisplay属性是你的问题,你的类继承了Collection(Of T )基类。得到它开始使用您的ToString()再次超越简单,只是使它看起来像这样:

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

很好的解决方案,我不知道这个技巧XD – Drake 2010-04-07 16:13:47

2

您将需要设置为类MyCollection的调试器属性 - 在C#中我会做 [DebuggerDisplay("Name:={Name}")]

在Visual Basic中做到这一点,

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

我知道我可以使用DebuggerDisplay,但不幸的是它非常有限。这个类实际上是相当复杂的,我需要在调试过程中显示的内容中定义一个逻辑。 – Drake 2010-04-07 09:50:06

+0

在DebuggerDisplay中显示一个属性,你的复杂逻辑然后是 – Axarydax 2010-04-07 09:56:39

相关问题