예제 #1
0
        private static async Task <Document> MakeClassSealed(Document document, TypeDeclarationSyntax typeDecl, CancellationToken cancellationToken)
        {
            var newModifiers = typeDecl.AddModifiers(SyntaxFactory.Token(SyntaxKind.SealedKeyword));
            var syntaxRoot   = await document.GetSyntaxRootAsync(cancellationToken);

            var syntaxRootWithReplacedModifiers = syntaxRoot.ReplaceNode(typeDecl, newModifiers);

            return(document.WithSyntaxRoot(syntaxRootWithReplacedModifiers));
        }
예제 #2
0
        public override void GenerateCode(List <MemberDeclarationSyntax> newMembers, GenerationContext context)
        {
            List <MemberDeclarationSyntax> nestedMembers = new List <MemberDeclarationSyntax>();

            foreach (SourceItem item in Items)
            {
                item.GenerateCode(nestedMembers, context);
            }

            TypeDeclarationSyntax type = Declaration switch
            {
                ClassDeclarationSyntax @class => (TypeDeclarationSyntax)ClassDeclaration(Declaration.Identifier),
                InterfaceDeclarationSyntax @interface => InterfaceDeclaration(Declaration.Identifier),
                _ => throw new NotImplementedException()
            };

            newMembers.Add(type
                           .AddModifiers(SyntaxFactory.Token(SyntaxKind.PartialKeyword))
                           .WithMembers(List(nestedMembers)));
        }