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

C# 用于选定文本和远程代码生成的Resharper API,c#,visual-studio-2010,visual-studio,resharper,resharper-plugins,C#,Visual Studio 2010,Visual Studio,Resharper,Resharper Plugins,我想写一个Resharper插件,让我在另一个类中根据突出显示的文本生成代码,而API并不是最透明的。我应该看哪些方法来访问选定的文本,以及在当前类之外生成代码?当您编写上下文操作或类似的内容时(阅读此处有关操作和上下文操作的内容),您将收到IDataContext的实例。通过以下方式获取文本控件、文档和选择: var textControl = context.GetData(TextControl.DataContext.DataConstants.TEXT_CONTROL); var do

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

当您编写上下文操作或类似的内容时(阅读此处有关操作和上下文操作的内容),您将收到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,请参阅。当您获得声明的元素时,使用GetDeclarations()方法接收对所有类声明的访问(由于部分类的原因,可以有多个声明)并将其强制转换为IClassLikeDeclaration。使用AddClassMemberDeclaration方法添加成员,并删除要删除的RemoveClassMemberDeclaration。添加类成员时,请使用元素工厂创建添加的元素(请参见)

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