Пример #1
0
    protected override async Task GenerateCtor(StructuredStringBuilder sb)
    {
        if (BasicCtorPermission == CtorPermissionLevel.noGeneration)
        {
            return;
        }
        using (sb.Region("Ctor"))
        {
            sb.AppendLine($"{BasicCtorPermission.ToStringFast_Enum_Only()} {Name}()");
            using (sb.CurlyBrace())
            {
                List <Task> toDo = new List <Task>();
                toDo.AddRange(gen.GenerationModules.Select(mod => mod.GenerateInCtor(this, sb)));
                var fieldsTask = Task.WhenAll(IterateFields().Select(field => field.GenerateForCtor(sb)));
                toDo.Add(fieldsTask);
                await fieldsTask;
                fieldCtorsGenerated.SetResult();
                await Task.WhenAll(toDo);
                await GenerateInitializer(sb);

                sb.AppendLine("CustomCtor();");
            }
            sb.AppendLine("partial void CustomCtor();");
        }
    }
Пример #2
0
    protected override async Task GenerateCtor(StructuredStringBuilder sb)
    {
        if (BasicCtorPermission == CtorPermissionLevel.noGeneration)
        {
            return;
        }
        if (BasicCtorPermission == CtorPermissionLevel.@public)
        {
            sb.AppendLine($"public {Name}(");
            List <string> lines = new List <string>();
            foreach (var field in IterateFields())
            {
                lines.Add($"{field.TypeName(getter: false)} {field.Name} = default({field.TypeName(getter: false)})");
            }
            for (int i = 0; i < lines.Count; i++)
            {
                using (sb.IncreaseDepth())
                {
                    using (sb.Line())
                    {
                        sb.Append(lines[i]);
                        if (i != lines.Count - 1)
                        {
                            sb.Append(",");
                        }
                        else
                        {
                            sb.Append(")");
                        }
                    }
                }
            }

            using (sb.CurlyBrace())
            {
                foreach (var field in IterateFields())
                {
                    sb.AppendLine($"this.{field.Name} = {field.Name};");
                }
                foreach (var mod in gen.GenerationModules)
                {
                    await mod.GenerateInCtor(this, sb);
                }
                sb.AppendLine("CustomCtor();");
            }
            sb.AppendLine();
        }

        sb.AppendLine($"{BasicCtorPermission.ToStringFast_Enum_Only()} {Name}({Interface(getter: true)} rhs)");
        using (sb.CurlyBrace())
        {
            foreach (var field in IterateFields())
            {
                sb.AppendLine($"this.{field.Name} = {field.GenerateACopy("rhs." + field.Name)};");
            }
        }
        sb.AppendLine();

        sb.AppendLine("partial void CustomCtor();");
        sb.AppendLine();
    }