Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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);
        }