Вы можете получить нужный эффект, используя атрибут DebuggerTypeProxy . Вам нужно создать класс для отладочной «визуализации» вашего унаследованного списка:
internal sealed class MagicBeanListDebugView
{
private List<MagicBean> list;
public MagicBeanListDebugView(List<MagicBean> list)
{
this.list = list;
}
[DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
public MagicBean[] Items{get {return list.ToArray();}}
}
Затем вы можете объявить этот класс для использования отладчиком для отображения вашего класса вместе с атрибутом DebuggerDisplay
:
[DebuggerDisplay("Count = {Count}")]
[DebuggerTypeProxy(typeof(MagicBeanListDebugView))]
public class MagicBeanList : List<MagicBean>
{}
Это даст вам сообщение «Количество = 3», когда вы наводите курсор мыши на экземпляр вашего унаследованного списка в Visual Studio, и представление элементов в списке при развертывании корневого узла, без необходимости углубляться в базовые свойства.
Использование ToString()
для получения отладочной информации не является хорошим подходом, если, конечно, вы уже не переопределите ToString()
для использования в своем коде где-то еще, и в этом случае вы можете использовать его.