protected override CSharpSyntaxGeneratorResult Generate( InputObjectTypeDescriptor descriptor, CSharpSyntaxGeneratorSettings settings) { if (settings.InputRecords) { RecordDeclarationSyntax recordDeclarationSyntax = RecordDeclaration(Token(SyntaxKind.RecordKeyword), descriptor.Name.Value) .AddModifiers( Token(SyntaxKind.PublicKeyword), Token(SyntaxKind.PartialKeyword)) .AddGeneratedAttribute() .AddSummary(descriptor.Documentation) .WithOpenBraceToken(Token(SyntaxKind.OpenBraceToken)); foreach (var prop in descriptor.Properties) { recordDeclarationSyntax = recordDeclarationSyntax.AddMembers( PropertyDeclaration(prop.Type.ToTypeSyntax(), prop.Name) .AddModifiers(Token(SyntaxKind.PublicKeyword)) .AddSummary(prop.Description) .WithGetterAndInit() .WithSuppressNullableWarningExpression()); } recordDeclarationSyntax = recordDeclarationSyntax.WithCloseBraceToken( Token(SyntaxKind.CloseBraceToken)); return(new( descriptor.Name, null, descriptor.RuntimeType.NamespaceWithoutGlobal, recordDeclarationSyntax)); } ClassDeclarationSyntax classDeclaration = ClassDeclaration(descriptor.Name.Value) .AddModifiers( Token(SyntaxKind.PublicKeyword), Token(SyntaxKind.PartialKeyword)) .AddGeneratedAttribute() .AddSummary(descriptor.Documentation); foreach (var prop in descriptor.Properties) { classDeclaration = classDeclaration.AddMembers( PropertyDeclaration(prop.Type.ToTypeSyntax(), prop.Name) .AddModifiers(Token(SyntaxKind.PublicKeyword)) .AddSummary(prop.Description) .WithGetterAndSetter() .WithSuppressNullableWarningExpression()); } return(new( descriptor.Name, null, descriptor.RuntimeType.NamespaceWithoutGlobal, classDeclaration)); }
private CSharpSyntaxGeneratorResult GenerateDataClass( DataTypeDescriptor descriptor, CSharpSyntaxGeneratorSettings settings) { if (settings.EntityRecords) { RecordDeclarationSyntax recordDeclarationSyntax = RecordDeclaration(Token(SyntaxKind.RecordKeyword), descriptor.RuntimeType.Name) .AddModifiers( Token(SyntaxKind.PublicKeyword), Token(SyntaxKind.PartialKeyword)) .AddGeneratedAttribute() .AddSummary(descriptor.Documentation) .AddImplements(descriptor.Implements) .WithOpenBraceToken(Token(SyntaxKind.OpenBraceToken)); // Adds the constructor ConstructorDeclarationSyntax constructor = ConstructorDeclaration(descriptor.RuntimeType.Name) .AddModifiers(Token(SyntaxKind.PublicKeyword)); constructor = constructor.AddTypeParameter(); ForEachProperty( descriptor, p => constructor = constructor.AddStateParameter(p)); recordDeclarationSyntax = recordDeclarationSyntax.AddMembers(constructor); // Adds the property recordDeclarationSyntax = recordDeclarationSyntax.AddTypeProperty(); ForEachProperty( descriptor, p => recordDeclarationSyntax = recordDeclarationSyntax.AddStateProperty(p)); recordDeclarationSyntax = recordDeclarationSyntax.WithCloseBraceToken( Token(SyntaxKind.CloseBraceToken)); return(new( descriptor.RuntimeType.Name, State, descriptor.RuntimeType.NamespaceWithoutGlobal, recordDeclarationSyntax)); } else { ClassDeclarationSyntax classDeclaration = ClassDeclaration(descriptor.RuntimeType.Name) .AddModifiers( Token(SyntaxKind.PublicKeyword), Token(SyntaxKind.PartialKeyword)) .AddGeneratedAttribute() .AddSummary(descriptor.Documentation) .AddImplements(descriptor.Implements); // Adds the constructor ConstructorDeclarationSyntax constructor = ConstructorDeclaration(descriptor.RuntimeType.Name) .AddModifiers(Token(SyntaxKind.PublicKeyword)); constructor = constructor.AddTypeParameter(); ForEachProperty( descriptor, p => constructor = constructor.AddStateParameter(p)); classDeclaration = classDeclaration.AddMembers(constructor); // Adds the property classDeclaration = classDeclaration.AddTypeProperty(); ForEachProperty( descriptor, p => classDeclaration = classDeclaration.AddStateProperty(p)); return(new( descriptor.RuntimeType.Name, State, descriptor.RuntimeType.NamespaceWithoutGlobal, classDeclaration)); } }
protected override CSharpSyntaxGeneratorResult Generate( EntityTypeDescriptor descriptor, CSharpSyntaxGeneratorSettings settings) { if (settings.EntityRecords) { RecordDeclarationSyntax recordDeclarationSyntax = RecordDeclaration(Token(SyntaxKind.RecordKeyword), descriptor.RuntimeType.Name) .AddModifiers( Token(SyntaxKind.PublicKeyword), Token(SyntaxKind.PartialKeyword)) .AddGeneratedAttribute() .AddSummary(descriptor.Documentation) .WithOpenBraceToken(Token(SyntaxKind.OpenBraceToken)); if (descriptor.Properties.Count > 0) { ConstructorDeclarationSyntax constructor = ConstructorDeclaration(descriptor.RuntimeType.Name) .AddModifiers(Token(SyntaxKind.PublicKeyword)); foreach (PropertyDescriptor property in descriptor.Properties.Select(t => t.Value)) { constructor = constructor.AddStateParameter(property); } recordDeclarationSyntax = recordDeclarationSyntax.AddMembers(constructor); foreach (PropertyDescriptor property in descriptor.Properties.Select(t => t.Value)) { recordDeclarationSyntax = recordDeclarationSyntax.AddStateProperty(property); } } recordDeclarationSyntax = recordDeclarationSyntax.WithCloseBraceToken( Token(SyntaxKind.CloseBraceToken)); return(new( descriptor.RuntimeType.Name, State, descriptor.RuntimeType.NamespaceWithoutGlobal, recordDeclarationSyntax)); } ClassDeclarationSyntax classDeclaration = ClassDeclaration(descriptor.RuntimeType.Name) .AddModifiers( Token(SyntaxKind.PublicKeyword), Token(SyntaxKind.PartialKeyword)) .AddGeneratedAttribute() .AddSummary(descriptor.Documentation); if (descriptor.Properties.Count > 0) { ConstructorDeclarationSyntax constructor = ConstructorDeclaration(descriptor.RuntimeType.Name) .AddModifiers(Token(SyntaxKind.PublicKeyword)); foreach (PropertyDescriptor property in descriptor.Properties.Select(t => t.Value)) { constructor = constructor.AddStateParameter(property); } classDeclaration = classDeclaration.AddMembers(constructor); foreach (PropertyDescriptor property in descriptor.Properties.Select(t => t.Value)) { classDeclaration = classDeclaration.AddStateProperty(property); } } return(new( descriptor.RuntimeType.Name, State, descriptor.RuntimeType.NamespaceWithoutGlobal, classDeclaration)); }