Exemple #1
0
        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);
            }
        }