我沒有成功搜索到從我的C#插件visual studio extension中獲取的方法,當鼠標移到某個代碼元素上時顯示在Quick Info中。如何以編程方式獲取Visual Studio中的快速信息所顯示的信息
我希望有一個優雅的方式來做到這一點。
謝謝。
我沒有成功搜索到從我的C#插件visual studio extension中獲取的方法,當鼠標移到某個代碼元素上時顯示在Quick Info中。如何以編程方式獲取Visual Studio中的快速信息所顯示的信息
我希望有一個優雅的方式來做到這一點。
謝謝。
快速瀏覽顯示存在和可在類上訪問的方法和屬性,因此一種解決方案是使用反射來獲取此信息。
//獲取所述方法的類MyClass的 MethodInfo的[] methodInfos = typeof運算(MyClass的).GetMethods(BindingFlags.Public | BindingFlags.Static);
我沒有一個代碼示例,但發現了ViewFilter.HandleQuickInfo方法的以下文檔,這聽起來像您需要執行的步驟。
基部方法調用傳遞給ViewFilter構造以獲得當前插入位置的IVsTextView對象上的GetCaretPos方法。然後將此位置傳遞給Source對象(從ViewFilter構造函數中的CodeWindowManager對象獲取)中的OnSyncQuickInfo(IVsTextView,Int32,Int32)方法。如果OnSyncQuickInfo(IVsTextView,Int32,Int32)返回任何文本,則此方法接下來調用GetFullDataTipText方法以在調試活動時從調試器獲取任何其他信息。最後,使用新的(或當前的)對象來顯示工具提示。
編輯:
可以使用IVsTextManager檢索當前IVsTextView。
var textManager = Resolve.Service<IVsTextManager, SVsTextManager>();
IVsTextView textView;
ErrorHandler.ThrowOnFailure(textManager.GetActiveView(fMustHaveFocus: 1, pBuffer: null, ppView: out textView));
Int32 caretRow, caretCol;
ErrorHandler.ThrowOnFailure(textView.GetCaretPos(out caretRow, out caretCol));
不過,我被困在那裏,而無法做任何有用與IVsTextView.UpdateTipWindow,它從來沒有要求我通過虛擬對象上的任何東西,所以我相信它需要從語言服務已經可見IVsTipWindow。
感謝您的回答,但不幸的是我已經測試過這個解決方案,但沒有成功。 – rodi 2011-02-01 20:09:17
感謝但我想要的不是列出類的所有方法,但獲取quickview的信息,當我將鼠標移動到代碼元素上時,我不知道此代碼元素存在於哪個類中以使用您的解決方案。 – rodi 2011-02-01 02:59:29