Oct 15, 2009

Атрибут DebuggerDisplay

Это одна из моих любимых возможностей по улучшению процесса дебага. Рассмотрим следующий пример. Пусть есть объект Product:

public class Product 
{ 
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual string Description { get; set; }
    public virtual double Price { get; set; } 
}

Если навести на него в debug режиме, то мы увидим следующее:

productNotExpanded C одной стороны все нормально, если навести на плюсик, то получим полную информацию:

productExpanded  А теперь посмотрим как будет выглядеть список этих объектов:

listOfProductUgly Соответственно чтобы найти в этом списке продукт с Id = 5 приходится последовательно разворачивать каждый (особенно если список не отсортирован).

Для удобочитаемости объекта в дебаге можно воспользоваться атрибутом DebuggerDisplay. Он позволяет изменять вид отображения объекта. Например если добавить следующий атрибут к классу Product:

[DebuggerDisplay("Id = {Id}, Name= {Name}, Price = {Price}")]
public class Product 
//... далее описание класса

В фигурных скобках указываются интересующие нас свойства. Результат:

listOfProductNice Этой краткой информации вполне достаточно чтобы понять что находится в коллекции и найти там нужный элемент.

No comments:

Post a Comment