マウスをいくつかのコード要素の上に移動したときに、Quick Infoに表示されたC#アドインビジュアルスタジオ拡張から取得する方法を検索せずに検索しました。Visual Studioでクイック情報で表示される情報をプログラムで取得する方法
私はそれを行うエレガントな方法があることを願っています。
ありがとうございました。
マウスをいくつかのコード要素の上に移動したときに、Quick Infoに表示されたC#アドインビジュアルスタジオ拡張から取得する方法を検索せずに検索しました。Visual Studioでクイック情報で表示される情報をプログラムで取得する方法
私はそれを行うエレガントな方法があることを願っています。
ありがとうございました。
クイックビューには、クラスに存在し、アクセス可能なメソッドとプロパティが表示されるため、この情報を取得するためにリフレクションを使用することが1つの解決策になります。
//はクラス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メソッドを呼び出してデバッガから追加情報を取得します。最後に、新しい(または現在の)TextTipDataオブジェクトがツールチップを表示するために使用されます。
編集:
あなたは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
ありがとうございますが、私はクラスのすべてのメソッドを表示するのではなく、クイックビューの情報を取得し、コード要素の上にマウスを移動すると、このコード要素があなたのソリューション。 – rodi