private static CompilationUnitSyntax GenerateSyntax(BasicData data, IEnumerable <DependecyData> contexDependecies) { var compilationUnit = SyntaxFactory.CompilationUnit(); compilationUnit = compilationUnit.AddUsings(data.Usings); var @namespace = SyntaxFactoryEx.NamespaceDeclaration(data.Namespace); var classDeclaration = SyntaxFactoryEx.InternalClassDeclaration(data.HandlerName); var typeArgumentList = new List <TypeSyntax>(); typeArgumentList.Add(SyntaxFactory.IdentifierName(data.CommandName + data.CommandTypeArguments)); if (data.ReturnType != null) { typeArgumentList.Add(data.ReturnType); } classDeclaration = classDeclaration.AddBaseListTypes(SyntaxFactory.SimpleBaseType(SyntaxFactory.GenericName(SyntaxFactory.Identifier("IRequestHandler")).AddTypeArgumentListArguments(typeArgumentList.ToArray()))); var constructor = GenerateConstructor(data.HandlerName, contexDependecies); var handleMethod = GenerateHandleMethod(data); var members = new MemberDeclarationSyntax[] { constructor, handleMethod }; classDeclaration = classDeclaration.AddMembers(members); @namespace = @namespace.AddMembers(classDeclaration); compilationUnit = compilationUnit.AddMembers(@namespace); var code = compilationUnit.NormalizeWhitespace(); return(code); }
public static CompilationUnitSyntax CreateParameterObjectClass(ParameterObject parameterObject, IEnumerable <ParameterSyntax> parameters) { var compilationUnit = SyntaxFactory.CompilationUnit(); compilationUnit = compilationUnit.AddUsings(parameterObject.Usings); var @namespace = SyntaxFactoryEx.NamespaceDeclaration(parameterObject.Namespace); var classDeclaration = SyntaxFactoryEx.InternalClassDeclaration(parameterObject.Name); var members = new List <MemberDeclarationSyntax>(); foreach (var property in parameterObject.Properties) { var propertyDeclaration = SyntaxFactory.PropertyDeclaration(SyntaxFactory.ParseTypeName(property.Type), property.PropertyName) .AddModifiers(SyntaxFactory.Token(SyntaxKind.PublicKeyword)) .AddAccessorListAccessors( SyntaxFactory.AccessorDeclaration(SyntaxKind.GetAccessorDeclaration).WithSemicolonToken(SyntaxFactory.Token(SyntaxKind.SemicolonToken)), SyntaxFactory.AccessorDeclaration(SyntaxKind.SetAccessorDeclaration).WithSemicolonToken(SyntaxFactory.Token(SyntaxKind.SemicolonToken))); members.Add(propertyDeclaration); } var body = new List <StatementSyntax>(); foreach (var property in parameterObject.Properties) { var assignment = SyntaxFactory.ExpressionStatement ( SyntaxFactory.AssignmentExpression ( SyntaxKind.SimpleAssignmentExpression, SyntaxFactory.IdentifierName(property.PropertyName), SyntaxFactory.IdentifierName(property.ParameterName) ) ); body.Add(assignment); } var constructor = SyntaxFactory.ConstructorDeclaration(SyntaxFactory.Identifier(parameterObject.Name)) .AddModifiers(SyntaxFactory.Token(SyntaxKind.PublicKeyword)) .AddParameterListParameters(parameters.ToArray()) .AddBodyStatements(body.ToArray()); members.Add(constructor); classDeclaration = classDeclaration.AddMembers(members.ToArray()); @namespace = @namespace.AddMembers(classDeclaration); compilationUnit = compilationUnit.AddMembers(@namespace); var code = compilationUnit.NormalizeWhitespace(); return(code); }
private static CompilationUnitSyntax GenerateSyntax(BasicData data) { var compilationUnit = SyntaxFactory.CompilationUnit(); compilationUnit = compilationUnit.AddUsings(data.Usings, data.Namespace); var @namespace = SyntaxFactoryEx.NamespaceDeclaration(data.Namespace); var classDeclaration = SyntaxFactoryEx.PublicClassDeclaration(data.CommandName); if (data.ReturnType != null) { classDeclaration = classDeclaration.AddBaseListTypes(SyntaxFactory.SimpleBaseType(SyntaxFactory.GenericName(SyntaxFactory.Identifier("IRequest")).AddTypeArgumentListArguments(data.ReturnType))); } else { classDeclaration = classDeclaration.AddBaseListTypes(SyntaxFactory.SimpleBaseType(SyntaxFactory.IdentifierName("IRequest"))); } @namespace = @namespace.AddMembers(classDeclaration); compilationUnit = compilationUnit.AddMembers(@namespace); var code = compilationUnit.NormalizeWhitespace(); return(code); }