Coders,我正在为VS2010开发一个插件,我正在尝试在代码编辑器中获取所选文本。到目前为止,我一直在搜索许多网页,你的所有人似乎都使用 DTE.ActiveDocument ,这会导致我的代码出错。我编写了两个版本的方法,假设在编辑器中返回一个选定的文本,但我仍然会一遍又一遍地得到相同的错误: 错误是:非静态字段,方法或属性'EnvDTE._DTE.ActiveDocument.get'需要对象引用 这是我的两个版本的方法(只显示相关的代码):
using EnvDTE;
private string getSelectedText_V1()
{
string selectedText = string.Empty;
/*PROBLEM HERE: An object reference is required for the non-static field, method, or property 'EnvDTE._DTE.ActiveDocument.get'*/
Document doc = DTE.ActiveDocument;
return selectedText;
}
private string getSelectedText_V2()
{
string selectedText = string.Empty;
/*PROBLEM HERE: An object reference is required for the non-static field, method, or property 'EnvDTE._DTE.ActiveDocument.get'*/
EnvDTE.TextSelection TxtSelection = DTE.ActiveDocument.Selection;
return selectedText;
}
请帮我弄清楚我的代码中出错了什么?
答案 0 :(得分:2)
如果您可以在插件中访问GetService()方法,则可以添加:
DTE dte = this.GetService(typeof(DTE))为DTE;
然后你的代码将成为:
private string getSelectedText_V1()
{
string selectedText = string.Empty;
DTE dte = this.GetService(typeof(DTE) as DTE;
Document doc = dte.ActiveDocument;
return doc.Selection.Text;
}