3
클래스의 반환 유형 문자열을 사용하여 속성을 제거하는 resharper 플러그인을 만들고 싶습니다. 이미 선택된 클래스에서 모든 속성을 가져 오는 IActionHandler
을 만들었지 만 코드 구조를 수정하여 클래스에서 속성을 제거 할 수있는 방법을 모르겠습니다.Resharper 7.1 플러그인을 사용하여 IClass에서 IProperty 삭제
public void Execute(IDataContext context, DelegateExecute nextExecute)
{
// Fetch active solution from context.
ISolution solution = context.GetData(JetBrains.ProjectModel.DataContext.DataConstants.SOLUTION);
if (solution == null)
return;
var declaredElements = context.GetData(DataConstants.DECLARED_ELEMENTS);
if (declaredElements == null || declaredElements.IsEmpty())
return;
IDeclaredElement declaredElement = declaredElements.First();
var classElement = declaredElement as IClass;
if (classElement != null)
{
var properties = classElement.Properties.Where(p => p.Type.IsString());
foreach (IProperty property in properties)
{
// Remove IProperty from IClass <--
}
}
}
어떤 아이디어 : 여기
는IActionHandler
의 실행 방법?
public void Execute(IDataContext context, DelegateExecute nextExecute)
{
// Fetch active solution from context.
ISolution solution = context.GetData(JetBrains.ProjectModel.DataContext.DataConstants.SOLUTION);
if (solution == null)
return;
var declaredElements = context.GetData(DataConstants.DECLARED_ELEMENTS);
if (declaredElements == null || declaredElements.IsEmpty())
return;
IDeclaredElement declaredElement = declaredElements.First();
var classElement = declaredElement as IClass;
if (classElement != null)
{
// As a class can be declared in multiple files (partial classes) we enumerate all
// declarations and choose the first one
var declarations = classElement.GetDeclarations();
var classDeclaration = declarations.First() as IClassDeclaration;
var properties = classDeclaration.PropertyDeclarations.Where(p => p.Type.IsString());
foreach (var propertyDeclaration in properties)
{
PsiManager.GetInstance(solution).DoTransaction(() =>
{
classDeclaration.RemoveClassMemberDeclaration(propertyDeclaration);
},
"PsiTransactionCommand");
}
}
}
: