EnvDTE.Expression - 以编程方式获取DataMembers的内部名称

时间:2010-12-07 10:00:20

标签: c# visual-studio vsx envdte vs-extensibility

假设我有C#代码行:

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

然后我将“myList”放入Watch窗口,然后向下拖动列表的第1项,监视窗口创建一个新行,其中包含此数据成员的内部名称,在本例中为

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

我的问题是,有没有办法以编程方式从EnvDTE的Expression的DataMember获取此内部名称?

非常感谢!

2 个答案:

答案 0 :(得分:0)

我没有完整的配方,但我看到List<T>将自定义属性System.Diagnostics.DebuggerTypeProxyAttribute设置为ProxyTypeName设置为System.Collections.Generic.Mscorlib_CollectionDebugView'1。据我所知,这意味着在监视窗口中您实际看到的是代理类型,而不是原始代理类型。也许这可以指出你正确的方向。

获取我所做的属性:

myList.GetType().GetCustomAttributes(false);

答案 1 :(得分:0)

不,你不能。你必须自己动手。