在查看MSDN上的「Using DebuggerDisplay Attribute」文章後,他們建議您可以替代類的ToString()函數作爲備用選項,而不是使用DebuggerDisplay屬性。重寫ToString()方法也不會隱藏你的bean。
如果C#對象具有一個重寫 的ToString(),調試器將調用 倍率並顯示其結果代替 標準{}的。 因此,如果 你重寫了ToString(),你不必使用DebuggerDisplay做 。如果您同時使用 ,則DebuggerDisplay 屬性優先於 ToString()重寫。
你能夠覆蓋你的類的ToString()方法,或者你是否將它用於其他目的?
我不知道你是否已經考慮過這個問題,但我認爲我會建議它只是在幫助它。 :-)
爲了完整性,所以其他人可以快速地模擬它;下面是我做了一個簡單的例子:
namespace StackOverflow
{
//broken BeanPouch class that uses the DebuggerDisplay attribute
[System.Diagnostics.DebuggerDisplay("Count = {Count}")]
class BrokenBeanPouch : List<MagicBean>
{ }
//working BeanPouch class that overrides ToString
class WorkingBeanPouch : List<MagicBean>
{
public override string ToString()
{
return string.Format("Count = {0}", this.Count);
}
}
class Program
{
static WorkingBeanPouch myWorkingBeans = new WorkingBeanPouch()
{
new MagicBean() { Value = 4.99m }, new MagicBean() { Value = 5.99m }, new MagicBean() { Value = 3.99m }
};
static BrokenBeanPouch myBrokenBeans = new BrokenBeanPouch()
{
new MagicBean() { Value = 4.99m }, new MagicBean() { Value = 5.99m }, new MagicBean() { Value = 3.99m }
};
static void Main(string[] args)
{
//break here so we can watch the beans in the watch window
System.Diagnostics.Debugger.Break();
}
}
class MagicBean
{
public decimal Value { get; set; }
}
}
漂亮,是有用的,但似乎很漂亮的複製和粘貼。我現在無法測試,但有什麼方法可以使用List已經使用的代碼,或者至少能夠編寫一次通用版本?我討厭爲每個自定義容器類輸入這個。 – MighMoS 2009-07-09 13:40:28