當我創建一個類並重寫ToString()
,當我調試器下運行Visual Studio我可以懸停在用鼠標遊標類型的變量,VS顯示我不管我的方法返回,又讓放在那裏的信息總和對於這個特殊的類而言是典型的,在調試過程中很有價值但是,如果我從List
繼承我的課,總是VS顯示像從我重寫ToString()
返回Count=20
忽略了價值,所以我必須在快速監視窗口,我想看到的類總結每次鍵入variable.ToString()
。有什麼辦法讓VS顯示ToString()
從List
繼承的類?如何讓VS顯示在調試器下從List繼承的類的ToString()值?
0
A
回答
3
您將需要創建自己的子類,它繼承.NET List
類,並在其中覆蓋ToString()
方法。使用標準List<type>
語法的任何地方都需要更改爲使用新的自定義List類。使用此代碼
public class MyList<T> : List<T>
{
public override string ToString()
{
StringBuilder sb = new StringBuilder();
foreach (T t in this)
{
sb.Append("[" + t.ToString() + "] ");
}
return sb.ToString();
}
}
:
static void Main(string[] args)
{
MyList<string> strings = new MyList<string>();
strings.Add("asdf");
strings.Add("teare");
}
生成的輸出時的ToString()被調用:
[asdf] [teare]
編輯您的問題:
我建議建立一個通用的接口,你可以指定一個特定的模板來匹配你的列表類所在的版本,這可以然後獲取特定的自定義類成員。下面的代碼演示。
public interface IWidget
{
string Name { get; }
}
public class Widget : IWidget
{
public string Name { get; private set; }
public Widget(string name_) { Name = name_; }
}
[DebuggerDisplay("{this.ToString()}")]
public class MyList<T> : List<T> where T : IWidget
{
public override string ToString()
{
StringBuilder sb = new StringBuilder();
foreach (IWidget w in this)
{
sb.Append("[" + w.Name + "] ");
}
return sb.ToString();
}
}
注:這將限制您可以在您的自定義集合類使用類型,但是這取決於你想要達到的目的,可能並不重要。
相關問題
- 1. 使用從ArrayList或List繼承的索引器VS <T>?
- 2. 如何讓VS調試器顯示對象成員的類型名稱?
- 3. 有什麼辦法讓Eclipse調試器只顯示非繼承的Java變量?
- 4. C++繼承「toString」
- 5. 如何從另一個繼承類的繼承類的說話
- 6. 如何顯示s.th.在android下的List?
- 7. 如何從繼承類調用方法
- 8. 如何從繼承類調用函數?
- 9. 如何在調試時使用ToString以外的委託顯示對象的值?
- 10. 如何在python中繼承「Manager().list」?
- 11. 調用從繼承類
- 12. 如何讓派生類從基類繼承變量以獲得不同的值?
- 13. 自我VS類的名字在繼承
- 14. 如何從VBA中的繼承類調用基類的方法?
- 15. 如何從Qt類繼承?
- 16. 如何從GObject類繼承?
- 17. 如何在調試時讓ipdb顯示更多上下文?
- 18. 如何讓我的班級在調試器中顯示可由變量瀏覽器顯示的名義「值」?
- 19. 如何在C#中顯示繼承groupbox#
- 20. 如何讓我的DebuggerTypeProxy目標類從基本代理繼承?
- 21. 我如何讓我的頁面從類而不是表繼承?
- 22. 如何獲取ToString()以顯示在調試中
- 23. 當從基類繼承ToString()時數據類型混淆
- 24. C++,聯盟VS類繼承
- 25. 如何從每個基類的繼承類調用屬性?
- 26. 如何讓S4類從另一個S4類正確繼承?
- 27. 什麼調用從NSManagedObject繼承的類?
- 28. 如何在調試時讓nacl-gdb顯示調試符號?
- 29. 如何讓流暢的NHibernate自動映射從繼承自接口的抽象類繼承的類?
- 30. 繼承的類Vs的協議
好吧,但我需要通過這個特定類型的屬性裏面'的ToString()'來操作,因此這種方法應該知道的類型。 'MYLIST:列表',然後'MySpecifiTypeList:MYLIST '不幫我,同樣的計數爲20,與更多的代碼更新,告訴你如何能做到這一點的結果 –
YMC
2013-03-07 20:02:09
。 – 2013-03-07 21:54:23
邁克,你是否運行它來檢查結果?我複製和粘貼你的代碼,但保持計數= 2。請告知 – YMC 2013-03-07 22:18:12