Visualisation et affichage des donnéesVisualizing and viewing data

Visualiseurs de type et les visionneuses personnalisées présentent les données de manière significative rapidement à un développeur.Type visualizers and custom viewers present data in a way that is quickly meaningful to a developer. L’évaluateur d’expression (EE) peut prendre en charge les visualiseurs de types de fournisseurs tiers ainsi que fournir ses propres visionneuses personnalisées.The expression evaluator (EE) can support third-party type visualizers as well as supply its own custom viewers.

Visual StudioVisual Studio Détermine combien des visualiseurs de type et des visionneuses personnalisées sont associées avec le type d’objet en appelant le GetCustomViewerCount (méthode). determines how many type visualizers and custom viewers are associated with the object's type by calling the GetCustomViewerCount method. Si le visualiseur d’au moins un type ou de la visionneuse personnalisée est disponible, Visual Studio appelle le GetCustomViewerList pour récupérer une liste de ces visualiseurs et les visionneuses (méthode) (en fait, une liste de s qui implémente les visualiseurs et visionneuses) et les présente à l’utilisateur.If there is at least one type visualizer or custom viewer available, Visual Studio calls the GetCustomViewerList method to retrieve a list of those visualizers and viewers (actually, a list of s that implements the visualizers and viewers) and presents them to the user.

Prise en charge les visualiseurs de typeSupporting type visualizers

Il existe un nombre d’interfaces que le EE doit implémenter pour prendre en charge les visualiseurs de type.There are a number of interfaces that the EE must implement to support type visualizers. Ces interfaces peuvent être divisés en deux grandes catégories : les interfaces qui répertorient les visualiseurs de type et les interfaces qui accèdent aux données de la propriété.These interfaces can be broken down into two broad categories: interfaces that list the type visualizers and interfaces that access the property data.

Visualiseurs de type de listeListing type visualizers

Prend en charge de la EE répertoriant les visualiseurs de type dans son implémentation de IDebugProperty3::GetCustomViewerCount et IDebugProperty3::GetCustomViewerList.The EE supports listing the type visualizers in its implementation of IDebugProperty3::GetCustomViewerCount and IDebugProperty3::GetCustomViewerList. Ces méthodes passent l’appel aux méthodes correspondantes GetCustomViewerCount et GetCustomViewerList.These methods pass the call to the corresponding methods GetCustomViewerCount and GetCustomViewerList.

Le IEEVisualizerService est obtenu en appelant CreateVisualizerService.The IEEVisualizerService is obtained by calling CreateVisualizerService. Cette méthode requiert le IDebugBinder3 interface, qui est obtenue à partir de la IDebugBinder interface transmise au EvaluateSync.This method requires the IDebugBinder3 interface, which is obtained from the IDebugBinder interface passed to EvaluateSync. IEEVisualizerServiceProvider::CreateVisualizerService requiert également le IDebugSymbolProvider et IDebugAddress interfaces, qui ont été passés à IDebugParsedExpression::EvaluateSync.IEEVisualizerServiceProvider::CreateVisualizerService also requires the IDebugSymbolProvider and IDebugAddress interfaces, which were passed to IDebugParsedExpression::EvaluateSync. L’interface finale requise pour créer le IEEVisualizerService interface est la IEEVisualizerDataProvider interface qui implémente le EE.The final interface required to create the IEEVisualizerService interface is the IEEVisualizerDataProvider interface, which the EE implements. Cette interface permet aux modifications à apporter à la propriété qui est affichée.This interface allows changes to be made to the property being visualized. Toutes les données de propriété est encapsulé dans un IDebugObject interface, ce qui est également implémentée par le EE.All property data is encapsulated in an IDebugObject interface, which is also implemented by the EE.

L’accès aux données de propriétéAccessing property data

L’accès aux données de propriété s’effectue via le IPropertyProxyEESide interface.Accessing property data is done through the IPropertyProxyEESide interface. Pour obtenir cette interface, Visual Studio appelle QueryInterface sur l’objet de propriété à obtenir le IPropertyProxyProvider interface (implémenté sur le même objet qui implémente le IDebugProperty3 interface), puis appelle la GetPropertyProxy méthode pour obtenir le IPropertyProxyEESide interface.To obtain this interface, Visual Studio calls QueryInterface on the property object to get the IPropertyProxyProvider interface (implemented on the same object that implements the IDebugProperty3 interface) and then calls the GetPropertyProxy method to obtain the IPropertyProxyEESide interface.

Toutes les données transmises dans et hors de la IPropertyProxyEESide interface est encapsulée dans le IEEDataStorage interface.All data passed into and out of the IPropertyProxyEESide interface is encapsulated in the IEEDataStorage interface. Cette interface représente un tableau d’octets et est implémentée par Visual Studio et le Java EE.This interface represents an array of bytes and is implemented by both Visual Studio and the EE. Lorsque les données d’une propriété doit être modifié, Visual Studio crée un IEEDataStorage objet contenant les nouvelles données et les appels CreateReplacementObject avec cet objet de données afin d’obtenir un nouveau IEEDataStorage objet qui, à son tour, est passé à InPlaceUpdateObject pour mettre à jour les données de la propriété.When a property's data is to be changed, Visual Studio creates an IEEDataStorage object holding the new data and calls CreateReplacementObject with that data object in order to obtain a new IEEDataStorage object that, in turn, is passed to InPlaceUpdateObject to update the property's data. IPropertyProxyEESide::CreateReplacementObject permet la EE instancier sa propre classe qui implémente le IEEDataStorage interface.IPropertyProxyEESide::CreateReplacementObject allows the EE to instantiate its own class that implements the IEEDataStorage interface.

Prise en charge des visionneuses personnaliséesSupporting custom viewers

L’indicateur DBG_ATTRIB_VALUE_CUSTOM_VIEWER est défini dans le dwAttrib champ la DEBUG_PROPERTY_INFO structure (retourné par un appel à GetPropertyInfo) pour indiquer que l’objet a une visionneuse personnalisée associée avec elle.The flag DBG_ATTRIB_VALUE_CUSTOM_VIEWER is set in the dwAttrib field of the DEBUG_PROPERTY_INFO structure (returned by a call to GetPropertyInfo) to indicate that the object has a custom viewer associated with it. Lorsque cet indicateur est défini, Visual Studio obtient les IDebugProperty3 de l’interface à partir de la IDebugProperty2 à l’aide de l’interface QueryInterface.When this flag is set, Visual Studio obtains the IDebugProperty3 interface from the IDebugProperty2 interface using QueryInterface.

Si l’utilisateur sélectionne une visionneuse personnalisée, Visual Studio instancie la visionneuse personnalisée à l’aide de la visionneuse CLSID fourni par le IDebugProperty3::GetCustomViewerList (méthode).If the user selects a custom viewer, Visual Studio instantiates the custom viewer using the viewer's CLSID supplied by the IDebugProperty3::GetCustomViewerList method. Visual Studio appelle ensuite une valeur d’affichage pour afficher la valeur à l’utilisateur.Visual Studio then calls DisplayValue to show the value to the user.

Normalement, IDebugCustomViewer::DisplayValue présente une vue en lecture seule des données.Normally, IDebugCustomViewer::DisplayValue presents a read-only view of the data. Pour autoriser les modifications sur les données, le EE doit implémenter une interface personnalisée qui prend en charge la modification des données sur un objet de propriété.To allow changes to the data, the EE must implement a custom interface that supports changing data on a property object. Le IDebugCustomViewer::DisplayValue méthode utilise cette interface personnalisée pour prendre en charge la modification des données.The IDebugCustomViewer::DisplayValue method uses this custom interface to support changing the data. La méthode recherche l’interface personnalisée le IDebugProperty2 interface transmis en tant que le pDebugProperty argument.The method looks for the custom interface on the IDebugProperty2 interface passed in as the pDebugProperty argument.

Prise en charge les visualiseurs de type et les visionneuses personnaliséesSupporting both type visualizers and custom viewers

Un EE peut prendre en charge les visualiseurs de type et des visionneuses personnalisées dans le GetCustomViewerCount et GetCustomViewerList méthodes.An EE can support both type visualizers and custom viewers in the GetCustomViewerCount and GetCustomViewerList methods. Tout d’abord, le EE ajoute le nombre de visionneuses personnalisées qui il fournit à la valeur retournée par la GetCustomViewerCount (méthode).First, the EE adds the number of custom viewers that it is supplying to the value returned by the GetCustomViewerCount method. En second lieu, le EE ajoute le CLSIDs de ses propres visionneuses personnalisées à la liste retournée par la GetCustomViewerList (méthode).Second, the EE appends the CLSIDs of its own custom viewers to the list returned by the GetCustomViewerList method.

Voir aussiSee also

Tâches de débogage Debugging tasks
Visualiseur de type et visionneuse personnaliséeType visualizer and custom viewer