private static IEnumerable <ITemplateInfo> GetDependencies(ITemplateInfo template, string framework, string platform, IList <ITemplateInfo> dependencyList) { var dependencies = template.GetDependencyList(); foreach (var dependency in dependencies) { var dependencyTemplate = GenContext.ToolBox.Repo.Find(t => t.Identity == dependency && t.GetFrameworkList().Contains(framework) && t.GetPlatform() == platform); if (dependencyTemplate == null) { LogOrAlertException(string.Format(StringRes.ErrorDependencyNotFound, dependency, framework, platform)); } else { var templateType = dependencyTemplate?.GetTemplateType(); if (templateType != TemplateType.Page && templateType != TemplateType.Feature) { LogOrAlertException(string.Format(StringRes.ErrorDependencyType, dependencyTemplate.Identity)); } else if (dependencyTemplate.GetMultipleInstance()) { LogOrAlertException(string.Format(StringRes.ErrorDependencyMultipleInstance, dependencyTemplate.Identity)); } else if (dependencyList.Any(d => d.Identity == template.Identity && d.GetDependencyList().Contains(template.Identity))) { LogOrAlertException(string.Format(StringRes.ErrorDependencyCircularReference, template.Identity, dependencyTemplate.Identity)); } else { if (!dependencyList.Contains(dependencyTemplate)) { dependencyList.Add(dependencyTemplate); } GetDependencies(dependencyTemplate, framework, platform, dependencyList); } } } return(dependencyList); }