Exemple #1
0
        public void ShowNamespaces(bool forceRefresh = false)
        {
            if (!SharpDevelopUIOptions.ExpandReferences)
            {
                return;
            }

            if (namespaces.Count > 0 && !forceRefresh)
            {
                return;
            }

            namespaces.Clear();
            Nodes.Clear();

            if (string.IsNullOrEmpty(referenceProjectItem.FileName))
            {
                return;
            }
            if (!File.Exists(referenceProjectItem.FileName))
            {
                return;
            }

            if (Path.GetExtension(referenceProjectItem.FileName) == ".dll" ||
                Path.GetExtension(referenceProjectItem.FileName) == ".exe")
            {
                var asm = AssemblyDefinition.ReadAssembly(referenceProjectItem.FileName);
                foreach (var module in asm.Modules)
                {
                    if (!module.HasTypes)
                    {
                        continue;
                    }

                    foreach (var type in module.Types)
                    {
                        if (string.IsNullOrEmpty(type.Namespace))
                        {
                            continue;
                        }

                        if (!namespaces.ContainsKey(type.Namespace))
                        {
                            namespaces.Add(type.Namespace, new List <TypeDefinition>());
                        }

                        namespaces[type.Namespace].Add(type);
                    }

                    foreach (var ns in namespaces.Keys)
                    {
                        var nsNode = new NamespaceNode(ns, namespaces[ns]);
                        nsNode.InsertSorted(this);
                    }
                }
            }

            if (Path.GetExtension(referenceProjectItem.FileName).EndsWith("proj"))
            {
                // use parser service
            }
        }