Практическое руководство. Написание визуализатора
Обновлен: Ноябрь 2007
Этот раздел применим к:
Выпуск |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
Только управляемый код |
|||
Standard |
Только управляемый код |
|||
Pro и Team |
Только управляемый код |
Обозначения:
Применяется |
|
Не применяется |
|
Команда или команды скрыты по умолчанию. |
Можно написать пользовательский визуализатор для объекта любого управляемого класса, за исключением Object и Array.
Архитектура визуализатора отладчика состоит из двух частей:
Сторона отладчика — запускается в отладчике Visual Studio. Код стороны отладчика создаёт и отображает интерфейс пользователя для визуализатора.
Сторона отлаживаемого кода — выполняется внутри процесса, который отлаживается Visual Studio ( отлаживаемая программа).
Объекты данных, которые требуется визуализировать (строковые объекты, например), существуют в отлаживаемом процессе. Таким образом, отлаживаемая сторона должна отправить те данные объекта на сторону отладчика, которые могут быть отображены с помощью вновь созданного интерфейса пользователя.
Сторона отладчика получает объект данных, которые нужно визуализировать, от поставщика объекта, который реализует интерфейс IVisualizerObjectProvider. Отлаживаемая сторона отправляет объект данных через источник объекта , который является производным от VisualizerObjectSource. Поставщик объектов может также отправлять данные обратно к источнику объекта, что позволяет создавать визуализаторы, которые помимо отображения могут также изменять данные. Поставщик объектов может быть переопределен, чтобы контактировать с вычислителем выражений и, следовательно, с источником объектов.
Отлаживаемая и отладочная стороны взаимодействуют друг с другом через Stream. Предоставляются методы для сериализации объекта данных в Stream и десериализации Stream обратно в объект данных.
Код отлаживаемой стороны обуславливается с помощью атрибута DebuggerVisualizer (DebuggerVisualizerAttribute).
Чтобы создать пользовательский интерфейс визуализатора на стороне отладчика, необходимо создать класс, который наследует DialogDebuggerVisualizer и переопределить метод DialogDebuggerVisualizer.Show для отображения интерфейса.
Можно использовать IDialogVisualizerService для отображения форм Windows, диалоговых окон и элементов управления из визуализатора.
Поддержка универсальных типов ограничена. Можно написать визуализатор для целевого универсального типа, только если он является открытым. Ограничения накладываются те же, что и при использовании атрибута DebuggerTypeProxy. Дополнительные сведения см. в разделе Использование атрибута DebuggerTypeProxy.
При работе с пользовательскими визуализаторами следует учитывать вопросы безопасности. См. раздел Вопросы безопасности визуализатора.
Процедуры, приведенные ниже, дают подробное описание, что необходимо сделать для создания визуализатора. Подробности см. в разделе Пошаговое руководство. Написание визуализатора на C#.
Чтобы создать отладочную сторону
Используйте методы IVisualizerObjectProvider для получения визуализированного объекта на стороне отладчика.
Создайте класс, который наследует от DialogDebuggerVisualizer.
Переопределите метод DialogDebuggerVisualizer.Show для отображения интерфейса. Используйте методы IDialogVisualizerService для отображения форм, диалоговых окон и элементов управления Windows как части интерфейса.
Примените DebuggerVisualizerAttribute, предоставив ему визуализатор (DialogDebuggerVisualizer).
Чтобы создать отлаживаемую сторону
Примените DebuggerVisualizerAttribute, предоставив ему визуализатор (DialogDebuggerVisualizer) и источник объекта (VisualizerObjectSource). Если источник объекта не задан, будет использоваться источник объекта, заданный по умолчанию
Если необходимо, чтобы визуализатор редактировал объекты данных, помимо их отображения, то необходимо переопределить методы TransferData или CreateReplacementObject для VisualizerObjectSource.
См. также
Задачи
Практическое руководство. Установка визуализатора
Практическое руководство. Тестирование и отладка визуализатора
Основные понятия
Вопросы безопасности визуализатора