Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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;
        }
Exemplo n.º 3
0
 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);
     }
 }
Exemplo n.º 4
0
        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();
            }
        }