Esempio n. 1
0
        public static string GenerateClass(GenerateClassBaseModel model, GenerateClassOptions options)
        {
            var sb = new StringBuilder();

            if (options.IncludeUsingsAndNameSpace && options.Tabbing != 0)
            {
                throw new ApplicationException("Уровень вложенности должен быть равен нулю, если требуется сгенерировать класс, включая namespace и директивы using. " +
                                               $"Свойство {nameof(GenerateClassOptions.IncludeUsingsAndNameSpace)} должно быть равно false");
            }

            if (options.IncludeUsingsAndNameSpace)
            {
                options.Tabbing = 1;

                foreach (var usDir in model.Usings)
                {
                    sb.AppendLine($"using {usDir};");
                }

                if (model.Usings.Count > 0)
                {
                    sb.AppendLine();
                }

                sb.AppendLine($"namespace {model.NameSpace}");
                sb.AppendLine("{");
            }

            ClassBuilderExtensions.AddSummaryTag(sb, model.Summary, options.Tabbing);

            var _static = model.IsStatic? " static" : "";

            sb.AppendLineWithTabbing($"public{_static} class {model.ClassName}", options.Tabbing);
            sb.AppendLineWithTabbing("{", options.Tabbing);

            foreach (var sub in model.SubClasses)
            {
                sb.Append(sub.GenerateClass(new GenerateClassOptions
                {
                    Tabbing = options.Tabbing + 1,
                    IncludeUsingsAndNameSpace = false
                }));
                sb.AppendLine();
            }

            foreach (var elem in model.Properties)
            {
                elem.Generate(sb, options.Tabbing + 1);
            }

            sb.AppendLineWithTabbing("}", options.Tabbing);

            //Namespace нужно закрыть
            if (options.IncludeUsingsAndNameSpace)
            {
                sb.AppendLine("}");
            }

            return(sb.ToString());
        }
Esempio n. 2
0
 public void CreateCSharpFileInFolder(string folder, GenerateClassOptions options)
 {
     Directory.CreateDirectory(folder);
     File.WriteAllText($"{folder}/{ClassName}.cs", GenerateClass(options));
 }
Esempio n. 3
0
 public string GenerateClass(GenerateClassOptions options)
 {
     return(ClassGenerator.GenerateClass(this, options));
 }