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()); }
public void CreateCSharpFileInFolder(string folder, GenerateClassOptions options) { Directory.CreateDirectory(folder); File.WriteAllText($"{folder}/{ClassName}.cs", GenerateClass(options)); }
public string GenerateClass(GenerateClassOptions options) { return(ClassGenerator.GenerateClass(this, options)); }