void WriteClassFiles() { string destDir = "C:\\SDK"; if (MergePackageClasses) { foreach (var c in Classes) { if (c.Value.Count == 0) { continue; } List <string> namespaces = new List <string>(); foreach (var obj in c.Value) { foreach (var nss in obj.UsedNamespaces) { if (!namespaces.Contains(nss)) { namespaces.Add(nss); } } } string filename = c.Key + ".cs"; var ns = c.Key; ExtendedStringBuilder sb = new ExtendedStringBuilder(); sb.SetNamespaceIndent(); foreach (var s in namespaces) { sb.AppendLine($"using {s};"); } sb.AppendLine(""); sb.AppendLine(""); sb.AppendLine($"namespace {ns}"); sb.AppendLine("{"); sb.SetNamespaceIndent(); foreach (var obj in c.Value) { obj.BuildClass(sb); } sb.SetNamespaceIndent(); sb.AppendLine("}"); File.WriteAllText(Path.Combine(destDir, filename), sb.ToString()); } } }
public void BuildClass(ExtendedStringBuilder sb) { sb.SetClassIndent(); WriteSummary(sb); if (string.IsNullOrEmpty(SuperClass)) SuperClass = "MemoryObject"; sb.AppendLine($"public class {ClassName}:{SuperClass}"); sb.AppendLine("{"); sb.SetPropertyIndent(); sb.AppendLine($"public override int ObjectSize => {ClassSize};"); foreach (var p in Properties.Values.ToArray()) { p.BuildProperty(sb); sb.AppendLine(""); } sb.SetClassIndent(); sb.AppendLine("}"); sb.SetNamespaceIndent(); sb.AppendLine(""); sb.AppendLine(""); }