public static void AppendClassConstructor(StringBuilder buffer, string className, ClrProperty[] properties, int indentationLevel) { if (buffer == null) throw new ArgumentNullException(nameof(buffer)); if (className == null) throw new ArgumentNullException(nameof(className)); if (properties == null) throw new ArgumentNullException(nameof(properties)); AppendIndentation(buffer, indentationLevel); buffer.Append(@"public"); buffer.Append(' '); buffer.Append(className); buffer.Append('('); AppendParametersWithType(buffer, properties); buffer.Append(')'); buffer.AppendLine(); AppendOpenBrace(buffer, indentationLevel++); var appendEmptyLine = false; foreach (var property in properties) { if (property.Type.IsReference) { AppendArgumentNullCheck(buffer, property.Name, indentationLevel); appendEmptyLine = true; } } if (appendEmptyLine) { buffer.AppendLine(); } AppendAssignPropertiesToParameters(buffer, properties, indentationLevel); AppendCloseBrace(buffer, --indentationLevel); }
public ClrClass(string name, ClrProperty[] properties) { if (name == null) throw new ArgumentNullException(nameof(name)); if (properties == null) throw new ArgumentNullException(nameof(properties)); if (properties.Length == 0) throw new ArgumentOutOfRangeException(nameof(properties)); this.Name = name; this.Properties = properties; }
private static void AppendParametersWithType(StringBuilder buffer, ClrProperty[] properties) { for (var i = 0; i < properties.Length; i++) { if (i > 0) { buffer.Append(','); buffer.Append(' '); } var property = properties[i]; var propertyType = property.Type.Name; buffer.Append(propertyType); buffer.Append(' '); BufferHelper.AppendLowerFirst(buffer, property.Name); } }
private static void AppendAssignPropertiesToParameters(StringBuilder buffer, ClrProperty[] properties, int indentationLevel) { foreach (var property in properties) { AppendIndentation(buffer, indentationLevel); var name = property.Name; buffer.Append(@"this"); buffer.Append('.'); buffer.Append(name); buffer.Append(' '); buffer.Append('='); buffer.Append(' '); BufferHelper.AppendLowerFirst(buffer, name); buffer.Append(';'); buffer.AppendLine(); } }