Esempio n. 1
0
        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),
     });
 }
Esempio n. 3
0
        /// <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>()
            });
        }
Esempio n. 6
0
        /// <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);
        }
Esempio n. 7
0
        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();
        }
Esempio n. 10
0
        private void changeMember(Member member)
        {
            ChangeMember menuEvent = this._menuView.getChangeMemberChoice();

            this.handleChangeMemberInfo(member, menuEvent);
        }
Esempio n. 11
0
 /// <summary>
 /// 멤버 추가 삭제
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="mem"></param>
 private void ADChangeMember(Object sender, ClassChangeMemberEventArgs mem)
 {
     ChangeMember?.Invoke(this, mem);
 }