public static void AddImportedNamespaceContents(ArrayList result, ICompilationUnit cu, IClass callingClass) { IProjectContent projectContent = cu.ProjectContent; projectContent.AddNamespaceContents(result, "", projectContent.Language, true); foreach (IUsing u in cu.Usings) { AddUsing(result, u, projectContent); } AddUsing(result, projectContent.DefaultImports, projectContent); if (callingClass != null) { string[] namespaceParts = callingClass.Namespace.Split('.'); for (int i = 1; i <= namespaceParts.Length; i++) { foreach (object member in projectContent.GetNamespaceContents(string.Join(".", namespaceParts, 0, i))) { if (!result.Contains(member)) { result.Add(member); } } } IClass currentClass = callingClass; do { foreach (IClass innerClass in currentClass.GetAccessibleTypes(currentClass)) { if (!result.Contains(innerClass)) { result.Add(innerClass); } } currentClass = currentClass.DeclaringType; } while (currentClass != null); } }