강조 표시된 텍스트를 기반으로 다른 클래스의 코드를 생성 할 수있는 Resharper 플러그인을 작성하고 API가 가장 투명하지 않습니다. 선택한 텍스트에 액세스하고 현재 클래스 외부의 코드 생성에 액세스하려면 어떤 방법을 사용해야합니까?선택한 텍스트 및 원격 코드 생성을위한 Resharper API
답변
컨텍스트 동작이나 이와 비슷한 내용 (동작 및 컨텍스트 작업에 대해 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 참조).
추가 질문이 있으면 언제든지 저에게 연락하십시오.