Comment : écrire un visualiseur
Vous pouvez écrire un visualiseur personnalisé pour un objet de toute classe managée à l'exception de Object ou Array.
Notes
Dans les applications de Store, seul les visualiseurs HTML, XML, JSON et de texte standard sont pris en charge.Les visualiseurs personnalisés (créés par l'utilisateur) ne sont pas pris en charge.
L'architecture d'un visualiseur du débogueur comporte deux parties :
Le côté débogueur s'exécute dans le débogueur Visual Studio. Le code côté débogueur crée et affiche l'interface utilisateur de votre visualiseur.
Le côté programme débogué s'exécute dans le processus que Visual Studio débogue (le programme débogué).
L'objet de données que vous souhaitez visualiser (un objet String, par exemple) existe dans le processus du programme débogué. Le côté programme débogué doit donc envoyer cet objet de données au côté débogueur qui peut alors l'afficher à l'aide d'une interface utilisateur que vous créez.
Le côté débogueur reçoit cet objet de données à visualiser à partir d'un fournisseur d'objets qui implémente l'interface IVisualizerObjectProvider. Le côté programme débogué envoie l'objet de données via la source de l'objet qui est dérivée de VisualizerObjectSource. Le fournisseur d'objets peut également renvoyer des données à la source d'objet, vous permettant d'écrire un visualiseur capable de modifier et d'afficher des données. Le fournisseur d'objets peut être substitué pour parler à l'évaluateur d'expression et, par conséquent, à la source de l'objet.
Le côté programme débogué et le côté débogueur communiquent entre eux via Stream. Des méthodes sont fournies pour sérialiser un objet de données dans un Stream et désérialiser le Stream dans un objet de données.
Le code côté programme débogué est spécifié à l'aide de l'attribut DebuggerVisualizer (DebuggerVisualizerAttribute).
Pour créer l'interface utilisateur du visualiseur côté débogueur, vous devez créer une classe qui hérite de DialogDebuggerVisualizer et substituer la méthode DialogDebuggerVisualizer.Show pour afficher l'interface.
Vous pouvez utiliser IDialogVisualizerService pour afficher des formulaires, des boîtes de dialogue et des contrôles Windows à partir de votre visualiseur.
La prise en charge des types génériques est limitée. Vous pouvez écrire un visualiseur pour une cible qui est un type générique uniquement si le type générique est un type ouvert. Cette restriction est identique à la restriction qui s'applique lorsque vous utilisez l'attribut DebuggerTypeProxy. Pour plus d'informations, consultez Utilisation de l'attribut DebuggerTypeProxy.
Les visualiseurs personnalisés peuvent avoir des exigences en matière de sécurité. Consultez Considérations sur la sécurité du visualiseur.
Les procédures ci-après fournissent une vue d'ensemble de la marche à suivre pour créer un visualiseur. Pour une explication plus complète, consultez Procédure pas à pas : écriture d'un visualiseur en C#.
Pour créer le côté débogueur
Utilisez les méthodes IVisualizerObjectProvider pour obtenir l'objet visualisé côté débogueur.
Créez une classe qui hérite de DialogDebuggerVisualizer.
Substituez la méthode DialogDebuggerVisualizer.Show pour afficher votre interface. Les méthodes IDialogVisualizerService vous permettent d'afficher des formulaires, des boîtes de dialogue et des contrôles Windows dans le cadre de votre interface.
Appliquez DebuggerVisualizerAttribute, en lui affectant un visualiseur (DialogDebuggerVisualizer).
Pour créer le côté débogué
Appliquez DebuggerVisualizerAttribute, en lui affectant un visualiseur (DialogDebuggerVisualizer) et une source d'objet (VisualizerObjectSource). Si vous omettez la source de l'objet, une source d'objet par défaut sera utilisée.
Si vous souhaitez que votre visualiseur modifie et affiche des objets de données, substituez les méthodes TransferData ou CreateReplacementObject de VisualizerObjectSource.
Voir aussi
Tâches
Comment : installer un visualiseur
Comment : tester et déboguer un visualiseur
Concepts
Considérations sur la sécurité du visualiseur