當我創建一個類並重寫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. 如何在調試時使用ToString以外的委託顯示對象的值?
- 6. 如何從繼承類調用函數?
- 7. 如何從繼承類調用方法
- 8. 如何在python中繼承「Manager().list」?
- 9. 自我VS類的名字在繼承
- 10. 如何從VBA中的繼承類調用基類的方法?
- 11. 如何在調試時讓ipdb顯示更多上下文?
- 12. 如何在C#中顯示繼承groupbox#
- 13. 我如何讓我的頁面從類而不是表繼承?
- 14. 當從基類繼承ToString()時數據類型混淆
- 15. 什麼調用從NSManagedObject繼承的類?
- 16. 如何讓S4類從另一個S4類正確繼承?
- 17. 如何讓流暢的NHibernate自動映射從繼承自接口的抽象類繼承的類?
- 18. 繼承的類Vs的協議
- 19. 如何從JavaScript中的類繼承?
- 20. 如何從java中的主類繼承
- 21. 如何不顯示繼承的DataTable的Visual Studio設計器
- 22. Java Eclipse調試:跟蹤繼承類var
- 23. Python 2.7繼承繼承用戶輸入值的類的值
- 24. 從Java類繼承的Kotlin類是否也從Any繼承?
- 25. 的Rails 3抽象類VS繼承
- 26. 如何在UML類圖中顯示私有繼承關係
- 27. 如何測試一個類繼承Thread
- 28. 如何僅在特定類型的情況下繼承類?
- 29. NSCoding:如何在繼承類
- 30. 讓window1.xaml.vb從MyWindow繼承
好吧,但我需要通過這個特定類型的屬性裏面'的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