Sau khi xem bài viết "Using DebuggerDisplay Attribute" trên MSDN, chúng gợi ý rằng bạn có thể ghi đè hàm ToString() của lớp của bạn dưới dạng tùy chọn thay thế thay vì sử dụng thuộc tính DebuggerDisplay. Việc ghi đè phương thức ToString() cũng sẽ không ẩn đậu của bạn.
Nếu một đối tượng C# có ghi đè ToString(), trình gỡ lỗi sẽ gọi ghi đè và hiển thị kết quả của nó thay vì của chuẩn {}. Vì vậy, nếu bạn đã ghi đè ToString(), bạn thực hiện không phải sử dụng DebuggerDisplay. Nếu bạn sử dụng cả hai, thuộc tính DebuggerDisplay được ưu tiên hơn ghi đè ToString().
Bạn có thể ghi đè phương thức ToString() trên lớp học của mình hoặc bạn đang sử dụng nó cho các mục đích khác không?
Tôi không biết nếu bạn đã xem xét điều này hay chưa, nhưng tôi nghĩ tôi muốn đề nghị nó chỉ giúp ích. :-)
Để hoàn chỉnh, vì vậy bất kỳ ai khác có thể nhanh chóng giả lập; đây là ví dụ nhanh mà tôi đã thực hiện:
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; }
}
}
Nguồn
2009-07-08 22:01:04
Tiện lợi, hữu ích, nhưng có vẻ khá sao chép và dán.Tôi không thể kiểm tra ngay bây giờ, nhưng có cách nào tôi có thể sử dụng danh sách mã đã sử dụng, hoặc ít nhất có thể viết một phiên bản chung một lần? Tôi ghét phải nhập điều này cho mọi lớp chứa tùy chỉnh. – MighMoS
Sau khi đi qua một số đào, rõ ràng câu trả lời là không. – MighMoS