public static X9Record GetObjectFor(XRecord record) { X9Record ret; switch (record.TypeId) { case "01": ret = new R01(); break; case "10": ret = new R10(); break; case "20": ret = new R20(); break; case "25": ret = new R25(); break; case "26": ret = new R26(); break; case "50": ret = new R50(); break; case "52": ret = new R52(); break; case "61": ret = new R61(); break; case "70": ret = new R70(); break; case "90": ret = new R90(); break; case "99": ret = new R99(); break; default: ret = new Unknown(); break; } return(ret); }
public static string GetClassFor(XRecord record) { var meta = GetMeta()[record]; var sb = new StringBuilder(); var props = new StringBuilder(); sb.Append($"public class R{record.TypeId}: X9Record\n{{\n public override void SetData(string data, byte[] optional = null)\n {{\n base.SetData(data, optional);\n"); sb.Append($" Debug.WriteLine(\"R{record.TypeId} SetData() called\");\n"); foreach (var field in meta) { if (field.FieldName == "RecordType") { continue; // part of base class, everyone has this } var dataType = "string"; if (field.DataType == DataType.Binary) { dataType = "byte[]"; } props.Append($" public {dataType} {field.FieldName} {{ get; set; }}\n"); if (field.DataType != DataType.Binary) { sb.Append($" {field.FieldName} = Data.Substring({field.Position.Start}, {field.Size});\n"); } else { //, Data.Length sb.Append($" {field.FieldName} = optional;\n"); } } sb.Append(" }\n\n"); sb.Append(props); sb.Append("}"); return(sb.ToString()); }