public override void Run(TextWriter writer, Class @class) { if (@class.Imports?.Count() > 0) { foreach (var item in @class.Imports) { writer.Append("using ").Append(item).AppendLine(";"); } writer.WriteLine(); } using (var scope = writer.BeginScope($"namespace {@class.Namespace}")) { scope.Writer.Run(writeAccessModifier, @class.AccessModifier); if (@class.Static) { scope.Writer.Append(" static"); } if (@class.Partial) { scope.Writer.Append(" partial"); } scope.Writer.Append(" class ").Append(@class.Name); if (@class.BaseClass != null) { scope.Writer.Append(" : ").Append(@class.BaseClass.Name); } using (var childScope = scope.Writer.BeginScope()) { if (@class.Constructors?.Count() > 0) { foreach (var constructor in @class.Constructors) { childScope.Writer.Run(writeConstructor, constructor).WriteLine(); } } if (@class.Fields?.Count() > 0) { foreach (var field in @class.Fields) { childScope.Writer.Run(writeField, field).WriteLine(); } } if (@class.Properties?.Count() > 0) { foreach (var property in @class.Properties) { childScope.Writer.Run(writeProperty, property).WriteLine(); } } if (@class.Methods?.Count() > 0) { foreach (var method in @class.Methods) { childScope.Writer.Run(writeMethod, method).WriteLine(); } } } } }
public override void Run(TextWriter writer, Property property) { writer.Run(writeAccessModifier, property.Modifier).Space(); if (property.Static) { writer.Static(); } writer.Run(writeType, property.Type).Space().Append(property.Name); using (var scope = writer.BeginScope()) { if (property.CanRead) { scope.Writer.Append("get"); if (property.GetCodeBlock != null) { scope.Writer.Run(writeCodeBlock, property.GetCodeBlock); } else { scope.Writer.Write(";"); } } if (property.CanWrite) { if (property.SetModifier != property.Modifier) { scope.Writer.Run(writeAccessModifier, property.SetModifier).Space(); } scope.Writer.Append("set"); if (property.SetCodeBlock != null) { scope.Writer.Run(writeCodeBlock, property.SetCodeBlock); } else { scope.Writer.Write(";"); } } } }