我想編寫一個Resharper插件,該插件允許我基於突出顯示的文本在另一個類中生成代碼,並且API不是最透明的。我應該查看哪些方法才能訪問選定的文本,以及在當前類之外的代碼生成?用於選定文本和遠程代碼生成的Resharper API
3
A
回答
3
當你正在編寫上下文動作或類似的東西(請閱讀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)。
如果您還有其他問題,請隨時與我聯繫。
相關問題
- 1. ReSharper的生成代碼
- 2. 自定義ReSharper的生成屬性代碼
- 3. 文本覆蓋該代碼用於生成氣球和文本圖像
- 4. 使用JavaScript基於HTML中的選定選項生成文本
- 5. 用於C++代碼生成
- 6. 遠程生成代理鍵
- 7. 遠程密碼生成
- 8. 用於從csv文件生成WordPress代碼的腳本
- 9. 生成rest API代碼?
- 10. 用於生成QR碼的JavaScript API
- 11. ReSharper - 如何在代碼清理中禁用生成垃圾文檔頭文件
- 12. 生成用於拖放的HTML代碼
- 13. 用於java代碼的wsdl生成器
- 14. Subversion版本遠程代碼
- 15. 本地和遠程JSON代碼之間的代碼差異
- 16. 使用LLVM API生成靜態代碼
- 17. PHP生成代碼到文本框?
- 18. 從選定的文本生成腳註
- 19. 生成的代碼縮進的API
- 20. 生成基於WSDL和XSD文件的python soaplib代碼
- 21. 用於Java的gRPC protobuf生成器 - 不同的生成代碼
- 22. resharper和代碼分析
- 23. 無法確定生成CoreData代碼生成的文件路徑
- 24. LLVM本機代碼生成
- 25. 用於爲Android應用程序生成促銷代碼的ID
- 26. 的Web應用程序代碼生成
- 27. 生成GUI用於C++代碼
- 28. 錯誤的字符代碼生成和T4文本模板
- 29. 檢索選定文本的html代碼
- 30. 編碼域特定文本生成器