Exemplo n.º 1
0
        public string GenerateInlineCode(string sourceVar, string destinationVar)
        {
            string genericDestinationTypeName = MapDestinationType.GetCSharpName();
            string genericSourceTypeName      = MapSourceType.GetCSharpName();
            string destinationTypename        = DestinationType.GetCSharpName();

            string intermediaryVarName = NameGenerator.GenerateInlineVarName();
            string iteratorName        = NameGenerator.GenerateInlineVarName();
            string inlineVarName       = NameGenerator.GenerateInlineVarName();


            //TODO: for lists there is no need for intermediary list, optimize in the future
            string code = "System.Collections.Generic.List<" + genericDestinationTypeName + "> " + intermediaryVarName + " = new System.Collections.Generic.List<" + genericDestinationTypeName + ">();\r\n" +
                          "foreach (" + genericSourceTypeName + " " + iteratorName + " in " + sourceVar + ")\r\n" +
                          "{\r\n" +
                          "\t" + genericDestinationTypeName + " " + inlineVarName + ";\r\n" +
                          //here the inner rule is called
                          innerRule.GenerateInlineCode(iteratorName, inlineVarName) +

                          "\t" + intermediaryVarName + ".Add(" + inlineVarName + ");\r\n" +
                          "}\r\n" +
                          destinationVar + " = new " + destinationTypename + "(" + intermediaryVarName + ");\r\n";

            return(code);
        }