EnvDTE.Expression - программно получить внутреннее имя DataMembers - PullRequest
1 голос
/ 07 декабря 2010

Предположим, у меня есть строка кода C #:

var myList = new List {1,2,3};

И я помещаю «myList» в окно «Watch», а затем перетаскиваю1-й элемент списка, окно наблюдения создает новую строку с внутренним именем этого элемента данных, которая в этом случае будет

(new System.Collections.Generic.Mscorlib_CollectionDebugView (myList)).Items [0]

Мой вопрос: есть ли способ программно получить это внутреннее имя из DataMember выражения EnvDTE?

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 17 февраля 2011

Нет, вы просто не можете.Вы должны свернуть свой собственный.

0 голосов
/ 07 декабря 2010

У меня нет полного рецепта, но я вижу, что List<T> имеет собственный атрибут System.Diagnostics.DebuggerTypeProxyAttribute, установленный с ProxyTypeName, установленным на System.Collections.Generic.Mscorlib_CollectionDebugView'1. Что, как я понимаю, означает, что в окнах просмотра вы на самом деле видите тот тип прокси, а не исходный. Может быть, это может указать вам правильное направление.

Чтобы получить атрибут, который я сделал:

myList.GetType().GetCustomAttributes(false);
...