用于选定文本和远程代码生成的 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用户?