2010-04-07 29 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

相關問題