Визуализация и просмотр данных

Визуализаторы типов и пользовательские средства просмотра представляют данные в удобном для разработчика виде. средство оценки выражений (EE) может поддерживать визуализаторы типов сторонних производителей, а также предоставлять собственные пользовательские средства просмотра.

Visual Studio Определяет, сколько визуализаторов типов и пользовательских средств просмотра связаны с типом объекта путем вызова метода жеткустомвиеверкаунт . если имеется хотя бы один визуализатор типов или пользовательское средство просмотра, Visual Studio вызывает метод жеткустомвиеверлист для получения списка этих визуализаторов и средств просмотра (на самом деле, списка, который реализует визуализаторы и средства просмотра) и представляет их пользователю.

Вспомогательные визуализаторы типов

существует ряд интерфейсов, которые EE должны быть реализованы для поддержки визуализаторов типов. Эти интерфейсы можно разделить на две широкие категории: интерфейсы, в которых перечисляются визуализаторы типов и интерфейсы, обращающиеся к данным свойства.

Список визуализаторов типов

EE поддерживает вывод списка визуализаторов типов в его реализации IDebugProperty3::GetCustomViewerCount и IDebugProperty3::GetCustomViewerList . Эти методы передают вызов соответствующим методам жеткустомвиеверкаунт и жеткустомвиеверлист.

Иивисуализерсервице получается путем вызова креатевисуализерсервице. Для этого метода требуется интерфейс IDebugBinder3 , полученный из интерфейса идебугбиндер , переданного в евалуатесинк. IEEVisualizerServiceProvider::CreateVisualizerService также требуются интерфейсы идебугсимболпровидер и идебугаддресс , которые были переданы в IDebugParsedExpression::EvaluateSync . последним интерфейсом, необходимым для создания IEEVisualizerService интерфейса, является интерфейс иивисуализердатапровидер , который реализуется EE. Этот интерфейс позволяет вносить изменения в свойство визуализации. Все данные свойств инкапсулируются в интерфейсе идебугобжект , который также реализуется ee.

Доступ к данным свойств

Доступ к данным свойства осуществляется через интерфейс ипропертипроксеесиде . чтобы получить этот интерфейс, Visual Studio вызывает QueryInterface для объекта property, чтобы получить интерфейс ипропертипроксипровидер (реализованный в том же объекте, который реализует интерфейс IDebugProperty3 ), а затем вызывает метод жетпропертипрокси для получения IPropertyProxyEESide интерфейса.

Все данные, передаваемые в интерфейс и из него IPropertyProxyEESide , инкапсулируются в интерфейсе иидатастораже . этот интерфейс представляет массив байтов и реализуется как Visual Studio, так и EE. при изменении данных свойства Visual Studio создает IEEDataStorage объект, содержащий новые данные, и вызывает функция createreplacementobject с этим объектом данных, чтобы получить новый IEEDataStorage объект, который, в свою очередь, передается в инплацеупдатеобжект для обновления данных свойства. IPropertyProxyEESide::CreateReplacementObjectпозволяет EE создать экземпляр собственного класса, реализующего IEEDataStorage интерфейс.

Поддержка пользовательских средств просмотра

Флаг DBG_ATTRIB_VALUE_CUSTOM_VIEWER задается в dwAttrib поле структуры DEBUG_PROPERTY_INFO (возвращается вызовом GetPropertyInfo), чтобы указать, что с объектом связано пользовательское средство просмотра. если этот флаг установлен, Visual Studio получает интерфейс IDebugProperty3 из интерфейса IDebugProperty2 с помощью QueryInterface.

если пользователь выбирает пользовательское средство просмотра, Visual Studio создает экземпляр пользовательского средства просмотра с помощью средства просмотра, CLSID предоставленного IDebugProperty3::GetCustomViewerList методом. затем Visual Studio вызывает дисплайвалуе , чтобы отобразить значение для пользователя.

Обычно IDebugCustomViewer::DisplayValue представляет собой представление данных, доступное только для чтения. чтобы разрешить изменения данных, EE должен реализовать пользовательский интерфейс, поддерживающий изменение данных в объекте свойства. IDebugCustomViewer::DisplayValueМетод использует этот пользовательский интерфейс для поддержки изменения данных. Метод выполняет поиск пользовательского интерфейса в IDebugProperty2 интерфейсе, переданном в качестве pDebugProperty аргумента.

Поддержка визуализаторов типов и пользовательских средств просмотра

EE может поддерживать как визуализаторы типов, так и пользовательские средства просмотра в методах жеткустомвиеверкаунт и жеткустомвиеверлист . во-первых, EE добавляет число пользовательских средств просмотра, которые он передает, в значение, возвращаемое методом жеткустомвиеверкаунт . во вторых, EE добавляет к CLSID списку, возвращенному методом жеткустомвиеверлист , собственные пользовательские средства просмотра.

См. также раздел