Exemplo n.º 1
0
        private static ClassDeclaration GenerateOutputClass(RecordDeclaration record, MethodDeclaration toStringMethod, MethodDeclaration equalsMethod, MethodDeclaration objectEqualsMethod, ClassDeclaration builderClass)
        {
            var constructorParams = record.RecordProperties
                                    .Select(p => new Parameter(p.Name, p.Type))
                                    .ToArray();

            var constructorAssignments = record.RecordProperties
                                         .Select(p => new AssignmentStatement($"this.{p.Name}", p.Name))
                                         .ToArray();

            var output = new ClassDeclaration(
                record.Name,
                new[] { new Constructor(record.Name, Visibility.Public, constructorParams, constructorAssignments) },
                Visibility.Public,
                inheritsImplements: new [] { "" },
                isPartial: true,
                contents: new IWriteableCode[] { toStringMethod, equalsMethod, objectEqualsMethod, builderClass });

            return(output);
        }