Правильно отображать подкласс списка в отладчике - PullRequest
0 голосов
/ 19 мая 2018

В моей программе я написал подкласс List, который здесь называется BetterList.

. Отладчик показывает оба следующих значения:

Pic

Могу ли япереопределить что-то, чтобы BetterList отображался правильно?

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Вы должны использовать DebuggerDisplayAttribute для этого сценария.

Проверка Улучшение отладки с помощью атрибута отображения отладчика документация для получения дополнительных сведений о нем и нескольких похожих атрибутов с более широкими функциональными возможностями.

0 голосов
/ 19 мая 2018

Предполагая, что новый класс предоставляет свойство Count, вы можете добавить DebuggerDisplayAttribute к классу для отображения свойства при отладке

[DebuggerDisplay("Count = {Count}")]
public class BetterList: List<SomeType> {
    //...

    public int Count { get; }
}

Для более сложных сценариев отображенияreview Использование атрибута DebuggerTypeProxy

DebuggerTypeProxyAttribute указывает прокси или замену для типа и изменяет способ отображения типа в отладчикеокна.Когда вы просматриваете переменную с прокси, прокси заменяет исходный тип на дисплее.В окне переменных отладчика отображаются только открытые члены типа прокси.Личные участники не отображаются.

[DebuggerDisplay("Count = {Count}")]
[DebuggerTypeProxy(typeof(BetterListDebuggerView))]
public class BetterList: List<SomeType> {
    //...

    public int Count { get; }

    internal class BetterListDebuggerView {
        private BetterList list;
        public BetterListDebuggerView(BetterList list) {
            this.list = list;
        }

        [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
        public SomeType[] Items {
            get {
                return list.ToArray();
            }
        }
    }
}
...