/// <summary> /// Gets the code classes form a CodeElements collection. /// </summary> /// <param name="codeElements">CodeElements collection from where to get the code classes.</param> /// <returns></returns> private static List <CodeClass> GetCodeClasses(CodeElements codeElements) { var result = new List <CodeClass>(); CodeClass codeClass; // Loop through code elements foreach (CodeElement code in codeElements) { if (code.Kind == vsCMElement.vsCMElementNamespace) { // Get classes from namespace result.AddRange(VisualStudioHelper.GetCodeClasses((code as CodeNamespace).Members)); } else if (code.Kind == vsCMElement.vsCMElementClass) { // Case code to CodeClass codeClass = (code as CodeClass); // Add class to the result result.Add(codeClass); // Add nested classes result.AddRange(VisualStudioHelper.GetCodeClasses(codeClass.Members)); } } return(result); }
/// <summary> /// Gets the code classes from a project. /// </summary> /// <param name="project">Project from where to obtain the code classes.</param> /// <returns></returns> public static IEnumerable <CodeClass> GetProjectCodeClasses(Project project) { var result = new List <CodeClass>(); foreach (ProjectItem codeFile in VisualStudioHelper.GetProjectCodeFiles(project)) { // Add classes from code file result.AddRange(VisualStudioHelper.GetCodeClasses(codeFile.FileCodeModel.CodeElements)); } return(result.OrderBy(c => c.Name)); }