public async Task <RichGenerationResult> GenerateRichAsync(TransformationContext context, IProgress <Diagnostic> progress, CancellationToken cancellationToken) { var processMemberNode = context.ProcessingNode; var newProcessMemberNode = context.ProcessingNode; var semanticModelRoot = context.SemanticModel.SyntaxTree.GetRoot(); var typeInfo = context.SemanticModel.GetDeclaredSymbol(processMemberNode); Dictionary <MethodDeclarationSyntax, MethodDeclarationSyntax> replacedMethods = new Dictionary <MethodDeclarationSyntax, MethodDeclarationSyntax>(); foreach (var method in processMemberNode.DescendantNodes().OfType <MethodDeclarationSyntax>()) { var newMethod = method.WithBody(SyntaxFactory.Block( SyntaxFactory.SingletonList <StatementSyntax>( SyntaxFactory.TryStatement( SyntaxFactory.SingletonList <CatchClauseSyntax>( SyntaxFactory.CatchClause() .WithDeclaration(SyntaxFactory.CatchDeclaration(SyntaxFactory.IdentifierName(SyntaxFactory.Identifier(SyntaxFactory.TriviaList(), "Exception", SyntaxFactory.TriviaList(SyntaxFactory.Space)))) .WithIdentifier(SyntaxFactory.Identifier("ex"))) //.WithBlock(SyntaxFactory.Block(SyntaxFactory.SingletonList(SyntaxFactory.ExpressionStatement(SyntaxFactory.IdentifierName("throw"))))) )) .WithBlock(method.Body)))).NormalizeWhitespace(); replacedMethods.Add(method, newMethod); } return(new RichGenerationResult { Members = replacedMethods.Select(p => ChangeMember.ReplaceMember(p.Key, p.Value)).ToList(), Usings = SyntaxFactory.List <UsingDirectiveSyntax>().Add(SyntaxFactory.UsingDirective(SyntaxFactory.IdentifierName("System"))), AttributeLists = SyntaxFactory.List <AttributeListSyntax>(), Externs = SyntaxFactory.List <ExternAliasDirectiveSyntax>() }); }
public RichGenerationResult CreateResult() { return(new RichGenerationResult { Members = Members.Select(m => ChangeMember.AddMember(TransformationContext.ProcessingNode, m)).ToList(), Usings = SyntaxFactory.List(Usings), AttributeLists = SyntaxFactory.List(AttributeLists), Externs = SyntaxFactory.List(Externs), }); }
/// <summary> /// member 삭제되었을 때 삭제 : 0 /// </summary> /// <param name="sender"></param> /// <param name="re"></param> private void ClassRemoveMember(Object sender, ClassRemoveArgs re) { basketstack.Children.Remove(sender as ClassInfoControl); //상위클래스에서 처리해주어야 할 일 ClassChangeMemberEventArgs changeargs = new ClassChangeMemberEventArgs(); changeargs.rootGroup = Group; changeargs.changeInfo = re.Info; changeargs.add_delete = 0; ChangeMember?.Invoke(this, changeargs); }
public async Task <RichGenerationResult> GenerateRichAsync(TransformationContext context, IProgress <Diagnostic> progress, CancellationToken cancellationToken) { var generatedMembers = await CodeGenerator.GenerateAsync(context, progress, CancellationToken.None); // Figure out ancestry for the generated type, including nesting types and namespaces. var wrappedMembers = context.ProcessingNode.Ancestors().Aggregate(generatedMembers, WrapInAncestor); return(new RichGenerationResult { Members = wrappedMembers.Select(m => ChangeMember.AddMember(null, m)).ToList() }); }
public async Task <RichGenerationResult> GenerateRichAsync(TransformationContext context, IProgress <Diagnostic> progress, CancellationToken cancellationToken) { var results = new List <ChangeMember>(); results.Add(ChangeMember.RemoveMember(context.ProcessingNode)); return(new RichGenerationResult { Members = results, Usings = SyntaxFactory.List <UsingDirectiveSyntax>(), AttributeLists = SyntaxFactory.List <AttributeListSyntax>(), Externs = SyntaxFactory.List <ExternAliasDirectiveSyntax>() }); }
/// <summary> /// 새로운 과목이 들어오면 그룹에 접근해서 해당과목이 존재하는지 확인해주고 없을 경우 추가하는 이벤트를 위로 보내줌, 추가 : 1 /// </summary> /// <param name="Info"></param> private bool Subject_Add(ClassInfoPlus Info) { foreach (IGroupable g in Group.Children) { ClassInfoPlus g_plus = g as ClassInfoPlus; if (Info.Info == g_plus.Info) { return(true); } } ClassChangeMemberEventArgs changeargs = new ClassChangeMemberEventArgs(); changeargs.rootGroup = Group; changeargs.changeInfo = Info; changeargs.add_delete = 1; ChangeMember?.Invoke(this, changeargs); //info가 추가 되었을 때 추가 : 1 return(false); }
public async Task <RichGenerationResult> GenerateRichAsync(TransformationContext context, IProgress <Diagnostic> progress, CancellationToken cancellationToken) { var results = new List <ChangeMember>(); MemberDeclarationSyntax copy = null; var applyToClass = context.ProcessingNode as ClassDeclarationSyntax; if (applyToClass != null) { copy = applyToClass .WithIdentifier(SyntaxFactory.Identifier(applyToClass.Identifier.ValueText + this.suffix)); results.Add(ChangeMember.AddMember(context.ProcessingNode, copy)); //results.Add(ChangeMember.ReplaceMember(context.ProcessingNode, copy)); } var applyToField = context.ProcessingNode as FieldDeclarationSyntax; if (applyToField != null) { var oldDeclaration = applyToField.Declaration; copy = applyToField.WithDeclaration(SyntaxFactory.VariableDeclaration(oldDeclaration.Type).WithVariables(SyntaxFactory.SeparatedList <VariableDeclaratorSyntax>( oldDeclaration.Variables.Select(v => { if (v is VariableDeclaratorSyntax variableDeclaratorSyntax) { return(SyntaxFactory.VariableDeclarator(variableDeclaratorSyntax.Identifier.Text + suffix)); } return(v); }) ))); results.Add(ChangeMember.AddMember(context.ProcessingNode, copy)); } return(new RichGenerationResult { Members = results, Usings = SyntaxFactory.List <UsingDirectiveSyntax>(), AttributeLists = SyntaxFactory.List <AttributeListSyntax>(), Externs = SyntaxFactory.List <ExternAliasDirectiveSyntax>() }); }
private void handleChangeMemberInfo(Member member, ChangeMember menuEvent) { try { if (menuEvent == ChangeMember.GoBack) { return; } if (menuEvent == ChangeMember.ChangeName) { member.Name = this._view.getMemberName(); } if (menuEvent == ChangeMember.ChangePersonalNr) { member.PersonalNumber = this._view.getMemberPIN(); } this._registry.updateMember(member); } catch (ArgumentException) { this._view.setInvalidInputMsg(); this.handleChangeMemberInfo(member, menuEvent); } }
/// <summary> /// Method For displaying update window /// </summary> private void SelectItemMethod() { ChangeMember window = new ChangeMember(currentMember); window.Show(); }
private void changeMember(Member member) { ChangeMember menuEvent = this._menuView.getChangeMemberChoice(); this.handleChangeMemberInfo(member, menuEvent); }
/// <summary> /// 멤버 추가 삭제 /// </summary> /// <param name="sender"></param> /// <param name="mem"></param> private void ADChangeMember(Object sender, ClassChangeMemberEventArgs mem) { ChangeMember?.Invoke(this, mem); }