コード例 #1
0
        private static MemberDeclarationSyntax GetNewMemberDeclaration(MemberDeclarationSyntax member, Accessibility accessibility, IModifierComparer comparer)
        {
            SyntaxKind modifierKind = GetFirstModifierKind(accessibility);

            switch (member.Kind())
            {
            case SyntaxKind.ClassDeclaration:
            {
                ClassDeclarationSyntax declaration = ((ClassDeclarationSyntax)member)
                                                     .InsertModifier(modifierKind, comparer);

                if (accessibility == Accessibility.ProtectedOrInternal)
                {
                    return(declaration.InsertModifier(SyntaxKind.InternalKeyword, comparer));
                }

                return(declaration);
            }

            case SyntaxKind.ConstructorDeclaration:
            {
                return(((ConstructorDeclarationSyntax)member).InsertModifier(modifierKind, comparer));
            }

            case SyntaxKind.ConversionOperatorDeclaration:
            {
                return(((ConversionOperatorDeclarationSyntax)member).InsertModifier(modifierKind, comparer));
            }

            case SyntaxKind.DelegateDeclaration:
            {
                return(((DelegateDeclarationSyntax)member).InsertModifier(modifierKind, comparer));
            }

            case SyntaxKind.EnumDeclaration:
            {
                return(((EnumDeclarationSyntax)member).InsertModifier(modifierKind, comparer));
            }

            case SyntaxKind.EventDeclaration:
            {
                return(((EventDeclarationSyntax)member).InsertModifier(modifierKind, comparer));
            }

            case SyntaxKind.EventFieldDeclaration:
            {
                return(((EventFieldDeclarationSyntax)member).InsertModifier(modifierKind, comparer));
            }

            case SyntaxKind.FieldDeclaration:
            {
                return(((FieldDeclarationSyntax)member).InsertModifier(modifierKind, comparer));
            }

            case SyntaxKind.IndexerDeclaration:
            {
                return(((IndexerDeclarationSyntax)member).InsertModifier(modifierKind, comparer));
            }

            case SyntaxKind.InterfaceDeclaration:
            {
                InterfaceDeclarationSyntax declaration = ((InterfaceDeclarationSyntax)member)
                                                         .InsertModifier(modifierKind, comparer);

                if (accessibility == Accessibility.ProtectedOrInternal)
                {
                    return(declaration.InsertModifier(SyntaxKind.InternalKeyword, comparer));
                }

                return(declaration);
            }

            case SyntaxKind.MethodDeclaration:
            {
                return(((MethodDeclarationSyntax)member).InsertModifier(modifierKind, comparer));
            }

            case SyntaxKind.OperatorDeclaration:
            {
                return(((OperatorDeclarationSyntax)member).InsertModifier(modifierKind, comparer));
            }

            case SyntaxKind.PropertyDeclaration:
            {
                return(((PropertyDeclarationSyntax)member).InsertModifier(modifierKind, comparer));
            }

            case SyntaxKind.StructDeclaration:
            {
                StructDeclarationSyntax declaration = ((StructDeclarationSyntax)member)
                                                      .InsertModifier(modifierKind, comparer);

                if (accessibility == Accessibility.ProtectedOrInternal)
                {
                    return(declaration.InsertModifier(SyntaxKind.InternalKeyword, comparer));
                }

                return(declaration);
            }

            default:
            {
                Debug.Fail(member.Kind().ToString());
                return(member);
            }
            }
        }