آشنایی با ویژگی 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 را با آن جایگزین نمودیم. ویژوال استودیو محتوای عبارت داخل {} را با مقدار آن فیلد جایگزین خواهد کرد.

  • #
    ‫۱۵ سال و ۶ ماه قبل، شنبه ۲۹ فروردین ۱۳۸۸، ساعت ۰۲:۳۳
    سلام
    عالی بود
    میشه یه منبع درباره ویژگی ها و نحوه بکار بردن اونا معرفی کنید؟
  • #
    ‫۱۵ سال و ۶ ماه قبل، شنبه ۲۹ فروردین ۱۳۸۸، ساعت ۰۴:۲۴
    سلام،
    http://www.codeproject.com/KB/cs/attributes.aspx
    http://oreilly.com/catalog/progcsharp/chapter/ch18.html
  • #
    ‫۱۵ سال و ۶ ماه قبل، شنبه ۲۹ فروردین ۱۳۸۸، ساعت ۰۴:۳۳
    سلام :
    ممکنه در مورد attributes های که برای متد ها ایجاد میشه یه توضیح بدید و اساس کار آنها را مشخص کنید .
  • #
    ‫۱۵ سال و ۶ ماه قبل، دوشنبه ۳۱ فروردین ۱۳۸۸، ساعت ۱۴:۲۳
    با سلام و تشکر از شما که با این وبلاگ فوق العاده کمک زیادی حداقل به من در خصوص یادگیری JQUERY کردید در مورد attribute ها یک راهنمایی کنید که داریم برنامه می نویسیم کجا باید از attribute ها استفاده کرد و مجبوریم فقط از آن استفاده کنیم
  • #
    ‫۱۵ سال و ۶ ماه قبل، سه‌شنبه ۱ اردیبهشت ۱۳۸۸، ساعت ۰۲:۱۷
    سلام
    دو ماخذ در بالا معرفی کردم که به اندازه‌ی کافی توضیحات لازم را به همراه دارند و ترجمه هر کدام شاید 20 - 30 صفحه‌ای می‌شود.

    کلا شما مجبور نیستید از این خصیصه‌ها یا ویژگی‌ها استفاده کنید. این‌ها یک سری اطلاعات اضافی هستند که به تعاریف کلاس‌ها یا متدها اضافه می‌شوند (می‌توانند اضافه شوند)، مثلا راهنما یا URL یا بیان این‌که این متد منسوخ شده است و دیگر از آن استفاده نکنید (در intellisense ظاهر می‌شود) و امثال آن.
    و یا کارآیی زمان اجرا می‌توانند داشته باشند مثل متدهای یک وب سرویس که با ویژگی وب‌ متد مشخص می‌شوند و در زمان اجرا به عنوان یکی از متدهای یک وب سرویس قابل استفاده خواهند بود. یا اگر مباحث unit testing را دنبال کرده باشید، یک سری ویژگی سفارشی دیگر نیز به کلاس‌های آزمون واحد اضافه می‌شود که نه در کامپایل تاثیری دارند و نه در هنگام اجرا بلکه توسط ابزارهای بررسی آزمون‌های واحد شناسایی شده و مورد استفاده قرار می‌گیرند.