コード例 #1
0
        /// <summary>
        /// Создание метода
        /// </summary>
        /// <param name="methodName">Название будущего метода</param>
        /// <param name="accessStatus">Видимость будущего метода</param>
        /// <param name="outputType">Формат вывода будущего метода,
        /// если пустой или null, то void</param>
        public MethodDeclarationSyntax CreateMethod(string methodName,
                                                    AccessStatuses accessStatus = AccessStatuses.Public,
                                                    string outputType           = "void")
        {
            if (string.IsNullOrEmpty(outputType))
            {
                outputType = "void";
            }
            MethodDeclarationSyntax expr = SyntaxFactory.MethodDeclaration(
                SyntaxFactory.ParseName(outputType),
                methodName)
                                           .WithModifiers(SyntaxFactory.TokenList(
                                                              SyntaxFactory.Token(AccessStatus.AccessType(accessStatus))))
                                           .WithBody(
                SyntaxFactory.Block());

            return(expr.NormalizeWhitespace());
        }
コード例 #2
0
        public MethodDeclarationSyntax CreateMethod2(string methodName,
                                                     AccessStatuses accessStatus = AccessStatuses.Public,
                                                     string outputType           = "void")
        {
            if (string.IsNullOrEmpty(outputType))
            {
                outputType = "void";
            }
            MethodDeclarationSyntax expr = SyntaxFactory.MethodDeclaration(
                SyntaxFactory.ParseName(outputType),
                methodName)
                                           .WithModifiers(SyntaxFactory.TokenList(
                                                              SyntaxFactory.Token(AccessStatus.AccessType(accessStatus))))
                                           .WithBody(
                SyntaxFactory.Block());

            //SyntaxFactory.AttributeList()

            /*SeparatedSyntaxList<AttributeSyntax> spr = new SeparatedSyntaxList<AttributeSyntax>();
             * spr.Add(SyntaxFactory.Attribute(SyntaxFactory.ParseName("string b")));
             * var b = SyntaxFactory.AttributeList(spr);
             * expr = expr.AddAttributeLists(b);*/

            expr = expr.AddParameterListParameters(new ParameterSyntax[]
            {
                SyntaxFactory.Parameter(SyntaxFactory.Identifier("a")).WithType(SyntaxFactory.ParseTypeName("string")),
                SyntaxFactory.Parameter(SyntaxFactory.Identifier("b")).WithType(SyntaxFactory.ParseTypeName("string"))
            });
            //SyntaxFactory.Parameter(SyntaxFactory.ParseToken("string a"));

            //ParameterSyntax parameterSyntax
            //AttributeListSyntax atr =

            /*expr.AddAttributeLists(new AttributeListSyntax[]
             * {
             *
             * });*/
            //SyntaxFactory.Parameter(SyntaxFactory.Token())
            //SyntaxFactory.Token(default(syntaxl))
            return(expr.NormalizeWhitespace());
        }
コード例 #3
0
        public static SyntaxKind AccessType(AccessStatuses accessStatus)
        {
            SyntaxKind syntaxKind;

            switch (accessStatus)
            {
            case AccessStatuses.Public:
                syntaxKind = SyntaxKind.PublicKeyword;
                break;

            case AccessStatuses.Private:
                syntaxKind = SyntaxKind.PrivateKeyword;
                break;

            case AccessStatuses.Protected:
                syntaxKind = SyntaxKind.ProtectedKeyword;
                break;

            default:
                throw new Exception("Данный статус не соответсвует статусам доступа");
            }
            return(syntaxKind);
        }