C# Expression-以编程方式获取数据成员的内部名称

C# Expression-以编程方式获取数据成员的内部名称,c#,visual-studio,vsx,envdte,vs-extensibility,C#,Visual Studio,Vsx,Envdte,Vs Extensibility,假设我有C代码行: var myList=新列表{1,2,3} 我将“myList”放在监视窗口中,然后向下拖动列表的第一项,监视窗口将创建一个新行,其中包含该数据成员的内部名称,在本例中为 (新System.Collections.Generic.Mscorlib_CollectionDebugView(myList)).Items[0] 我的问题是,有没有一种方法可以通过编程从EnvDTE表达式的DataMember获取此内部名称 非常感谢 我没有完整的配方,但我看到List具有自定义属性S

假设我有C代码行:

var myList=新列表{1,2,3}

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

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

我的问题是,有没有一种方法可以通过编程从EnvDTE表达式的DataMember获取此内部名称


非常感谢

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

要获取属性,我执行了以下操作:

myList.GetType().GetCustomAttributes(false);

不,你就是不能。你必须自己滚

谢谢,也许我应该在最初的帖子中提到这一点,但我已经知道了。我可以对调试器属性进行一些反向工程和检查,并找出表达式计算器在做什么,但我想问的是,是否有一种方法可以直接从Visual Studio的可扩展性API获取此字符串。我看不到任何能完全做到这一点的功能。我现在也在使用这个API,我想我会注意到是否有什么。谢谢你的评论,你是在使用EnvDTE的Expression对象,还是IDebugProperty2::GetPropertyInfo?我怀疑后者可能会产生一个解决方案,但不知道如何达到这个目标。