コード例 #1
0
        public override SyntaxNode VisitInterfaceDeclaration(InterfaceDeclarationSyntax node)
        {
            node = base.VisitInterfaceDeclaration(node) as InterfaceDeclarationSyntax;

            var afterKeyword = node.Keyword.GetNextToken().Text;

            switch (afterKeyword)
            {
            case k_IFunctionalitySubscriber:
                if (node.TypeParameterList == null)
                {
                    break;
                }

                if (node.DescendantNodes().OfType <PropertyDeclarationSyntax>().Where(x => x.Identifier.ValueText == k_Provider).Any())
                {
                    break;     // provider property is already implemented
                }
                var propertyDeclaration = Template.Compile <PropertyDeclarationSyntax>(k_ProviderProperty);
                node        = node.WithMembers(node.Members.Add(propertyDeclaration));
                wasModified = true;
                break;
            }

            return(node);
        }
コード例 #2
0
ファイル: Inserter.cs プロジェクト: NickCraver/Roslynator
        public static InterfaceDeclarationSyntax InsertMember(InterfaceDeclarationSyntax interfaceDeclaration, MemberDeclarationSyntax member)
        {
            if (interfaceDeclaration == null)
            {
                throw new ArgumentNullException(nameof(interfaceDeclaration));
            }

            return(interfaceDeclaration.WithMembers(InsertMember(interfaceDeclaration.Members, member)));
        }
コード例 #3
0
        private static MemberDeclarationSyntax RemoveMember(
            InterfaceDeclarationSyntax interfaceDeclaration,
            MemberDeclarationSyntax member,
            int index)
        {
            MemberDeclarationSyntax newMember = RemoveSingleLineDocumentationComment(member);

            interfaceDeclaration = interfaceDeclaration
                                   .WithMembers(interfaceDeclaration.Members.Replace(member, newMember));

            return(interfaceDeclaration
                   .RemoveNode(interfaceDeclaration.Members[index], GetRemoveOptions(newMember)));
        }
コード例 #4
0
        public static MemberDeclarationSyntax RemoveMember(
            this InterfaceDeclarationSyntax declaration,
            MemberDeclarationSyntax member,
            int index)
        {
            MemberDeclarationSyntax newMember = member.RemoveSingleLineDocumentationComment();

            declaration = declaration
                          .WithMembers(declaration.Members.Replace(member, newMember));

            return(declaration
                   .RemoveNode(declaration.Members[index], MemberDeclarationRefactoring.GetRemoveOptions(newMember)));
        }
コード例 #5
0
ファイル: CSharpSorter.cs プロジェクト: gjeltema/CSharpener
        private InterfaceDeclarationSyntax SortInterfaceNode(InterfaceDeclarationSyntax interfaceDeclaration)
        {
            var membersOfInterface = interfaceDeclaration.Members.ToList();
            var nodeData           = membersOfInterface.ToDictionary(x => x, x => new CSharpSyntaxNodeData(x));

            IComparer <MemberDeclarationSyntax> comparer = new NodeSorter(nodeData, sortingConfiguration);

            membersOfInterface.Sort(comparer);

            InterfaceDeclarationSyntax interfaceDeclarationNodeWithoutNodes = interfaceDeclaration.RemoveNodes(membersOfInterface, SyntaxRemoveOptions.KeepNoTrivia);
            InterfaceDeclarationSyntax finalInterfaceDeclarationNode        = interfaceDeclarationNodeWithoutNodes.WithMembers(new SyntaxList <MemberDeclarationSyntax>(membersOfInterface));

            return(finalInterfaceDeclarationNode);
        }
        private static async Task <Document> ReorderInterfaceMembersAsync(
            Document document,
            InterfaceDeclarationSyntax interfaceDeclaration,
            CancellationToken cancellationToken)
        {
            SyntaxNode oldRoot = await document.GetSyntaxRootAsync(cancellationToken);

            InterfaceDeclarationSyntax newDeclaration = interfaceDeclaration
                                                        .WithMembers(ProcessMemberDeclarations(interfaceDeclaration.Members))
                                                        .WithAdditionalAnnotations(Formatter.Annotation);

            SyntaxNode newRoot = oldRoot.ReplaceNode(interfaceDeclaration, newDeclaration);

            return(document.WithSyntaxRoot(newRoot));
        }
コード例 #7
0
        public static InterfaceDeclarationSyntax RemoveMember(InterfaceDeclarationSyntax interfaceDeclaration, MemberDeclarationSyntax member)
        {
            if (interfaceDeclaration == null)
            {
                throw new ArgumentNullException(nameof(interfaceDeclaration));
            }

            if (member == null)
            {
                throw new ArgumentNullException(nameof(member));
            }

            int index = interfaceDeclaration.Members.IndexOf(member);

            MemberDeclarationSyntax newMember = RemoveSingleLineDocumentationComment(member);

            interfaceDeclaration = interfaceDeclaration.WithMembers(interfaceDeclaration.Members.ReplaceAt(index, newMember));

            return(RemoveNode(interfaceDeclaration, f => f.Members, index, GetRemoveOptions(newMember)));
        }
コード例 #8
0
        public override SyntaxNode?VisitInterfaceDeclaration(InterfaceDeclarationSyntax node)
        {
            var members = OrganizeMembers(node.Members);

            return(node.WithMembers(members));
        }
コード例 #9
0
 public override SyntaxNode VisitInterfaceDeclaration(InterfaceDeclarationSyntax node)
 {
     return(node.WithMembers(UnifyMembers()));
 }
コード例 #10
0
 public override SyntaxNode VisitInterfaceDeclaration(InterfaceDeclarationSyntax node)
 {
     return(node.WithMembers(ReplaceMembers(node.Members)));
 }
コード例 #11
0
        public override SyntaxNode VisitInterfaceDeclaration(InterfaceDeclarationSyntax node)
        {
            node = (InterfaceDeclarationSyntax)base.VisitInterfaceDeclaration(node);

            return(node.WithMembers(SortMembers(node.Members)));
        }