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),
     });
 }
            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()
                });
            }
Esempio n. 3
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>()
            });
        }