/// <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()); }
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()); }
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); }