Визуализатор отладчика для любых типов ICollection и ICollection <T> - PullRequest
5 голосов
/ 28 июня 2011

Я создал форму с сеткой для визуализации любого объекта коллекции (ICollection, ICollection<T>).

После этого я создал класс визуализатора отладчика (наследуется от Microsoft.VisualStudio.DebuggerVisualizers.DialogDebuggerVisualizer).

Визуализатор установлен правильно (я пробовал на System.Collections.ArrayList класс).

Но у меня проблема с обобщением визуализатора для любого типа ICollection / ICollection<T>.

Я указал атрибут:

[assembly: DebuggerVisualizer( typeof( DebugerSide ), typeof( VisualizerObjectSource ), Target = typeof( System.Collections.Generic.ICollection<> ), Description = "Collection visualizer" )]
[assembly: DebuggerVisualizer( typeof( DebugerSide ), typeof( VisualizerObjectSource ), Target = typeof( System.Collections.ICollection ), Description = "Collection visualizer" )]

но VS не предлагает визуализатор при отладке.

Если указать точное имя класса, визуализатор доступен в VS. Есть ли способ, как осуществить свое намерение или нет, как его достичь?

Спасибо!

Ответы [ 2 ]

9 голосов
/ 11 июля 2011

Я думаю, что вы наткнулись на то же ограничение архитектуры визуализаторов, что и , описанный в этом вопросе.

Временное решение: создать визуализатор для System.WeakReference, а затем ввести в окне просмотра «новый WeakReference (myCollectionVariable)», после чего вы сможете открыть отладочный визуализатор по слабой ссылке. Внутри визуализатора отладки вы можете использовать рефлексию, чтобы выяснить, какой именно тип вашей переменной, и делать с ней все, что вы хотите.

См. Также это .

0 голосов
/ 19 апреля 2013

Думаю, все будет хорошо.

[assembly: DebuggerVisualizer( typeof( DebugerSide ), typeof( VisualizerObjectSource ), typeof(Collection), Description = "Collection visualizer" )]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...