public Expression(TypeInfo type, Arguments args, IEnumerable <Expression> expressions) { CodeBlock codeBlock = new CodeBlock(); if (expressions == null || expressions.Count() == 0) { if (args != null) { codeBlock.Append($"new {type}({args})"); } else { codeBlock.Append($"new {type}()"); } expr = codeBlock.ToString(); return; } if (args != null) { codeBlock.Append($"new {type}({args})"); } else { codeBlock.Append($"new {type}"); } codeBlock.Append(" { "); expressions.ForEach( assign => codeBlock.Append($"{assign}"), assign => codeBlock.Append(", ") ); codeBlock.Append(" }"); expr = codeBlock.ToString(); }
public void Output(string directory) { if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } foreach (Prototype clss in classes) { CodeBlock block = new CodeBlock(); foreach (var name in usings) { block.AppendFormat("using {0};", name); } block.AppendLine(); block.AppendFormat("namespace {0}", this.Namespace); var c = new CodeBlock(); c.Add(clss.GetBlock()); block.AddWithBeginEnd(c); string code = block.ToString(); string folder = directory; if (!string.IsNullOrEmpty(clss.Subdirectory)) { folder = Path.Combine(directory, clss.Subdirectory); if (!Directory.Exists(folder)) { Directory.CreateDirectory(folder); } } string file = Path.ChangeExtension(Path.Combine(folder, clss.Name), "cs"); File.WriteAllText(file, code); } }
private string FillAndCollect() { Method fill = new Method("FillObject") { modifier = Modifier.Public | Modifier.Override, args = new Arguments().Add<DataRow>("row") }; Method collect = new Method("UpdateRow") { modifier = Modifier.Public | Modifier.Override, args = new Arguments().Add<DataRow>("row") }; foreach (IColumn column in metaTable.Columns) { var fieldDef = dict_column_field[column.ColumnName]; string fieldName = fieldDef.PropertyName; fill.statements.AppendFormat("this.{0} = GetField<{1}>(row, _{0});", fieldName, fieldDef.Type); collect.statements.AppendFormat("SetField(row, _{0}, this.{0});", fieldName); } clss.Add(fill); clss.Add(collect); CodeBlock block = new CodeBlock(); block.Add(fill); block.AppendLine(); block.Add(collect); return block.ToString(2); }