2010-12-07 26 views
1

假設我有C#代碼行:EnvDTE.Expression - 獲取數據成員的內部名稱編程

變種myList中=新列表{1,2,3};

而且我把「myList中」監視窗口中,然後拖動列表的第一個項目下來,監視窗口中創建與此數據成員的內部名稱,在這種情況下將是一個新的生產線

(新System.Collections.Generic.Mscorlib_CollectionDebugView(myList中))。項目[0]

我的問題是,有沒有辦法在一個EnvDTE的表達式的數據成員編程方式獲得此內部名稱?

非常感謝!

回答

0

不,你不能。你必須推出自己的。

0

我沒有完整的配方,但我看到List<T>的自定義屬性System.Diagnostics.DebuggerTypeProxyAttribute設置爲ProxyTypeName設置爲System.Collections.Generic.Mscorlib_CollectionDebugView'1。據我所知,這意味着在監視窗口中,您實際上可以看到代理類型,而不是原來的代理類型。也許這可以指出你在正確的方向。

爲了讓我做的屬性:

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

謝謝,也許我應該在原帖中提到過,但我已經知道了。我可以做一些逆向工程並檢查調試器屬性,找出Expression Evaluator正在做什麼,但是我問的是如果有一種方法可以直接從Visual Studio的Extensibility API中獲取此字符串。 – 2010-12-07 16:43:03