یکی از کارهای معمول برای یک دولوپر دیباگ کد ها و تحلیل دادهها در زمان اجرای کدها میباشد.
این موضوع زمانی پیچیدهتر میشود که بخواهید مقدار یک مورد خاص را در مجموعهای حاوی چند صد مورد پیدا کنید.
یکی از راههایی که بتوانیم اطلاعات کافی مورد نیاز از یک آبجکت را در حین دیباگ به دست آوریم override کردن متد ToString کلاس است!
در این روش دو نکته وجود دارد:
۱- از آنجایی که ما متد ToString را override کردهایم، باعث می شود Expression Evaluator تابعی را فراخوانی کند که می تواند باعث کندتر شدن دیباگ دادهها باشد.
۲- نمیتوانیم دادههای متفاوتی برای دیباگ و ToString داشته باشیم.
بنابراین، بهترین راه برای نمایش مقدار مورد نظر داده های شی در زمان اجرا به روشی ساده و معنی دار چیست؟
اتریبیوت DebuggerDisplay اینجا به کمک میآید.
استفاده از ویژگی DebuggerDisplayAttribute به Expression Evaluator دستور می دهد تا عبارت ارائه شده را ارزیابی کند و مقدار حاصل را در پنجره دیباگ نمایش دهد.
در constructor یک رشته را به عنوان ورودی قبول میکند و در آن رشته میتوان هر کدام از پراپرتی های کلاس مورد نظر را استفاده کرد.
برای نمونه تکه کد زیر را ببینید.
[DebuggerDisplay("Name: {FirstName } - {LastName }")] public class Customer { public string FirstName { get; set; } public string LastName { get; set; } public Customer(string firstName, string lastName) { FirstName = firstName; LastName = lastName; } }
این اتریبیوت به آسانتر کردن فرآیند اشکالزدایی کمک میکند، مخصوصاً در مواردی که نوع پیچیدهای وجود دارد که انواع دیگر را در بر میگیرد و مقادیری که ما به آنها علاقه داریم در سطوح مختلف تودرتو هستند که وقتی بخشی از یک مجموعه باشد، پیچیدهتر میشود.