public string Analysis() { var Result = ""; var i = 0; while (i < Template.Count) { var Line = Template[i].Trim(); if (Line.Contains("[PRIMITIVEPROPERTIES]") || Line.Contains("[OBJECTPROPERTIES]") || Line.Contains("[ARRAYPROPERTIES]")) { var Block = ""; var j = i + 1; var Blocks = new List <string>(); #region Process create block and replace data while (j < Template.Count && !Template[j].Contains("[END]")) { Block += Template[j] + "\n"; j++; } if (Line.Contains("[PRIMITIVEPROPERTIES]")) { foreach (var Pair in Primitivepropertities) { var Replace = Block.Replace("[ITEM.NAME]", Pair.Key); Replace = Replace.Replace("[ITEM.TYPE]", Pair.Value); Replace = Replace.Replace("[ITEM.TYPES]", LanguageProcessService.ToPlural(Pair.Value)); Blocks.Add(Replace); } } else if (Line.Contains("[OBJECTPROPERTIES]")) { foreach (var Pair in Objectpropertities) { var Replace = Block.Replace("[ITEM.NAME]", Pair.Key); Replace = Replace.Replace("[ITEM.TYPE]", Pair.Value); Replace = Replace.Replace("[ITEM.TYPES]", LanguageProcessService.ToPlural(Pair.Value)); Blocks.Add(Replace); } } else if (Line.Contains("[ARRAYPROPERTIES]")) { foreach (var Pair in Arraypropertities) { var Replace = Block.Replace("[ITEM.NAME]", Pair.Key); Replace = Replace.Replace("[ITEM.TYPE]", Pair.Value); Replace = Replace.Replace("[ITEM.TYPES]", LanguageProcessService.ToPlural(Pair.Value)); Blocks.Add(Replace); } } #endregion i = j; Line = string.Join("\n", Blocks); } Result += Replace(Line) + "\n"; i++; } return(AnalysisConditional(Result)); }