Csharp/C#教程:找出游标是否在方法,类或命名空间块中分享


找出游标是否在方法,类或命名空间块中

我想创建一个Visual Studio插件,它可以识别插入符当前是否在方法,类或命名空间块中,即如果插入符号移动,插件应该能够记下插入符当前位于其中的状态 – 等元素。

如果这可以扩展到任何包含在花括号中的C#块,例如属性,那将是非常好的。

虽然我已经检查了类似的问题,但如果这是一个重复的问题,请告诉我,以便我可以相应地进行标记。 如果其他VS Addin相关问题在这里显然有用,请告诉我。

基本上,我想知道我们可以使用哪些技术以及如何实现这些技术。

编辑:我想开始的简短答案是:

实际上,我认为你需要做的第一件事就是判断你class级中有多少种方法或属性,以及它们的位置。 获得这些信息后。 您需要做的下一步是判断当前光标位置是什么。 然后,您可以与您获得的那些方法信息进行比较。 到目前为止,您可以获得光标所在的方法。这是我找到的球场解决方案。

我们来谈谈一些技术细节:

1.如何获得方法和属性的位置?

您可以使用NRefacotry或CSParser来执行此操作(我使用NRefactory完成我的要求)

2.如何获得光标位置?

在IVsTextView中有一个名为“GetCaretPos”的方法。 您可以通过TextManager获取ActiveTextView。 然后你可以使用“GetCaretPos”方法。 以下是一些代码可能对您有所帮助。

上述就是C#学习教程:找出游标是否在方法,类或命名空间块中分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

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; } } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/991552.html

(0)
上一篇 2021年12月23日
下一篇 2021年12月23日

精彩推荐