用于选定文本和远程代码生成的 Resharper API

Posted

技术标签:

【中文标题】用于选定文本和远程代码生成的 Resharper API【英文标题】:Resharper API for selected text and remote code generation 【发布时间】:2012-07-10 02:04:58 【问题描述】:

我想编写一个 Resharper 插件,让我可以根据突出显示的文本在另一个类中生成代码,并且 API 不是最透明的。我应该查看哪些方法来访问选定的文本以及在当前类之外生成代码?

【问题讨论】:

【参考方案1】:

当您编写上下文操作或类似内容时(在此处阅读http://confluence.jetbrains.net/display/ReSharper/ReSharper+7+Plugin+Development 关于操作和上下文操作),您会收到一个 IDataContext 实例。以这种方式从中获取文本控件、文档和选择:

var textControl = context.GetData(TextControl.DataContext.DataConstants.TEXT_CONTROL);
var document = textControl.Document;
var solution = projectFile.GetSolution();
TextRange selection = textControl.Selection.OneDocRangeWithCaret();

使用 document.GetText 获取选择范围的文本。

为了在当前类之外生成代码,您需要找到其他类声明的元素。为此,您需要使用 IDeclarationsCache,请参阅http://confluence.jetbrains.net/display/ReSharper/4.01+Caches+%28R7%29 关于它。当您获得声明的元素时,使用 GetDeclarations() 方法来接收对所有类声明的访问(由于部分类可能有多个声明)并将其转换为 IClassLikeDeclaration。使用 AddClassMemberDeclaration 方法添加成员和 RemoveClassMemberDeclaration 删除。添加类成员时,使用元素工厂创建添加的元素(参见http://confluence.jetbrains.net/display/ReSharper/3.2+Creating+Code+Elements+%28R7%29)。

如果您有其他问题,请随时与我联系。

【讨论】:

以上是关于用于选定文本和远程代码生成的 Resharper API的主要内容,如果未能解决你的问题,请参考以下文章

.NET工具ReSharper:如何帮助Visual Studio用户?

码住!Visual Studio扩展工具ReSharper安装指南来了

从 Word 中的选定文本中提取超链接

实用的VS工具

在vb net中,如何猎取和修改已选定的某一项的值?

文本溢出省略号不适用于 Firefox 中 <input type='file' /> 中选定的文件名。请提出解决方案