На самом деле, я думаю, что первое, что вам нужно сделать, это оценить, сколько методов или свойств в вашем классе и какова их позиция.После того, как вы получите эту информацию.Следующий шаг, который вам нужно сделать, это определить текущую позицию курсора.Затем вы можете сравнить с этими методами информацию, которую вы получили.До сих пор вы можете узнать, какой метод используется в вашем курсоре. Это примерное решение, которое я нахожу.
Давайте поговорим о некоторых технических деталях:
1.Как получитьпозиции методов и свойств?
Вы можете использовать NRefacotry или CSParser , чтобы сделать это (я использую NRefactory, чтобы закончить свое требование)
2.Как получить позицию курсора?
В IVsTextView есть метод с именем «GetCaretPos».Вы можете получить ActiveTextView через TextManager.Тогда вы можете использовать метод «GetCaretPos».Вот некоторые коды, которые могут вам помочь.
public static IVsTextManager TextManager
{
get
{
if (textManager == null)
{
Object obj = Package.GetGlobalService(typeof(SVsTextManager));
if (obj == null)
{
throw new ArgumentException("get textmanager failed in VSTextView");
}
textManager = obj as IVsTextManager;
}
return textManager;
}
}
public static IVsTextView ActiveTextView
{
get
{
IVsTextView activeView = null;
if (TextManager != null)
{
TextManager.GetActiveView(1, activeTextBuffer, out activeView);
}
return activeView;
}
}