۱۳۸۸/۰۱/۲۸

آشنايي با ويژگي DebuggerDisplay در VS.Net


كلاس ساده زير را در نظر بگيريد:

using System.Collections.Generic;

namespace testWinForms87
{
class CDbgDisplay
{
public struct Person
{
public string Name;
public int Id;
}

public static List<Person> GetData()
{
List<Person> data = new List<Person>();
for (int i = 0; i < 40; i++)
data.Add(new Person { Name = "P" + i, Id = i });
return data;
}
}

}
فرض كنيد مي‌خواهيم هنگام فراخواني متد GetData بر روي data يك break point قرار دهيم تا بتوان محتواي آن‌را در VS.Net مشاهده كرد (شكل زير).


همانطور كه مشاهده مي‌كنيد، خروجي پيش فرض آنچنان دلپذير نيست. به ازاي هر كدام از 40 موردي كه در اين ليست قرار دارد، يكبار بايد آن آيتم مورد نظر را انتخاب كرد، بر روي علامت + كنار آن كليك نمود و سپس محتواي آن‌را مشاهده كرد.
براي سفارشي سازي خروجي ديباگر ويژوال استوديو مي‌توان از ويژگي DebuggerDisplay استفاده كرد. سطر زير را به بالاي ساختار person اضافه كنيد:
[DebuggerDisplay("Name:{Name},Id={Id}")]

اكنون يكبار ديگر بر روي data يك break point قرار داده و نتيجه را ملاحظه نمائيد (شكل زير):


بهتر شد؛ نه؟!
در اينجا يك رشته را با محتواي فيلدهاي ساختار Person ايجاد كرديم و سپس خروجي پيش فرض ديباگر VS.Net را با آن جايگزين نموديم. ويژوال استوديو محتواي عبارت داخل {} را با مقدار آن فيلد جايگزين خواهد كرد.