protected bool InternalCollectProjectClasses(CodeNamespace parentCodeNamespace)
 {
     foreach (EnvDTE.CodeElement ce in parentCodeNamespace.Members)
     {
         if (ce.Kind == EnvDTE.vsCMElement.vsCMElementClass)
         {
             if (ce.InfoLocation == vsCMInfoLocation.vsCMInfoLocationProject)
             {
                 SolutionCodeElement sce = new SolutionCodeElement()
                 {
                     CodeElementName     = ce.Name,
                     CodeElementFullName = ce.FullName,
                     CodeElementRef      = ce
                 };
                 ComboItemsSourceCodeElements.Add(sce);
             }
             else
             {
                 return(false);
             }
         }
         else
         {
             if (ce.Kind == EnvDTE.vsCMElement.vsCMElementNamespace)
             {
                 CodeNamespace cn = (CodeNamespace)ce;
                 if (!InternalCollectProjectClasses(cn))
                 {
                     return(false);
                 }
             }
         }
     }
     return(true);
 }
Beispiel #2
0
 public virtual void CollectProjectClasses(SolutionProject sp)
 {
     SelectedCodeElement = null;
     if (ComboItemsSourceCodeElements == null)
     {
         ComboItemsSourceCodeElements = new ObservableCollection <SolutionCodeElement>();
     }
     else
     {
         ComboItemsSourceCodeElements.Clear();
     }
 }
        public override void CollectProjectClasses(SolutionProject sp)
        {
            base.CollectProjectClasses(sp);
            if (sp == null)
            {
                return;
            }
            if (sp.ProjectRef == null)
            {
                return;
            }

            Microsoft.VisualStudio.Shell.ThreadHelper.ThrowIfNotOnUIThread();



            if (sp.ProjectRef.CodeModel == null)
            {
                return;
            }
            foreach (EnvDTE.CodeElement ce in sp.ProjectRef.CodeModel.CodeElements)
            {
                if (ce.Kind == EnvDTE.vsCMElement.vsCMElementClass)
                {
                    if (ce.InfoLocation == vsCMInfoLocation.vsCMInfoLocationProject)
                    {
                        if ((ce as CodeClass).IsDerivedFrom["System.Data.Entity.DbContext"] || (ce as CodeClass).IsDerivedFrom["Microsoft.EntityFrameworkCore.DbContext"])
                        {
                            SolutionCodeElement sce = new SolutionCodeElement()
                            {
                                CodeElementName     = ce.Name,
                                CodeElementFullName = ce.FullName,
                                CodeElementRef      = ce
                            };
                            ComboItemsSourceCodeElements.Add(sce);
                        }
                    }
                }
                else
                {
                    if (ce.Kind == EnvDTE.vsCMElement.vsCMElementNamespace)
                    {
                        EnvDTE.CodeNamespace cn = (EnvDTE.CodeNamespace)ce;
                        InternalCollectProjectClasses(cn);
                    }
                }
            }
        }
        public override void CollectProjectClasses(SolutionProject sp)
        {
            base.CollectProjectClasses(sp);
            if (sp == null)
            {
                return;
            }
            if (sp.ProjectRef == null)
            {
                return;
            }
            if (sp.ProjectRef.CodeModel == null)
            {
                return;
            }
            List <SolutionCodeElement> localList = new List <SolutionCodeElement>();

            foreach (EnvDTE.CodeElement ce in sp.ProjectRef.CodeModel.CodeElements)
            {
                if (ce.Kind == EnvDTE.vsCMElement.vsCMElementClass)
                {
                    if (ce.InfoLocation == vsCMInfoLocation.vsCMInfoLocationProject)
                    {
                        SolutionCodeElement sce = new SolutionCodeElement()
                        {
                            CodeElementName     = ce.Name,
                            CodeElementFullName = ce.FullName,
                            CodeElementRef      = ce
                        };
                        //ComboItemsSourceCodeElements.Add(sce);
                        localList.Add(sce);
                    }
                }
                else
                {
                    if (ce.Kind == EnvDTE.vsCMElement.vsCMElementNamespace)
                    {
                        CodeNamespace cn = (CodeNamespace)ce;
                        InternalCollectProjectClasses(cn, localList);
                    }
                }
            }
            localList.Sort((a, b) => string.Compare(a.CodeElementFullName, b.CodeElementFullName));
            localList.ForEach(ce => ComboItemsSourceCodeElements.Add(ce));
        }
 protected bool InternalCollectProjectClasses(EnvDTE.CodeNamespace parentCodeNamespace)
 {
     foreach (EnvDTE.CodeElement ce in parentCodeNamespace.Members)
     {
         if (ce.Kind == EnvDTE.vsCMElement.vsCMElementClass)
         {
             if (ce.InfoLocation == vsCMInfoLocation.vsCMInfoLocationProject)
             {
                 if ((ce as CodeClass).IsDerivedFrom["System.Data.Entity.DbContext"] || (ce as CodeClass).IsDerivedFrom["Microsoft.EntityFrameworkCore.DbContext"])
                 {
                     //////// additional checkup here
                     SolutionCodeElement sce = new SolutionCodeElement()
                     {
                         CodeElementName     = ce.Name,
                         CodeElementFullName = ce.FullName,
                         CodeElementRef      = ce
                     };
                     ComboItemsSourceCodeElements.Add(sce);
                 }
             }
             else
             {
                 return(false);
             }
         }
         else
         {
             if (ce.Kind == EnvDTE.vsCMElement.vsCMElementNamespace)
             {
                 EnvDTE.CodeNamespace cn = (EnvDTE.CodeNamespace)ce;
                 if (!InternalCollectProjectClasses(cn))
                 {
                     return(false);
                 }
             }
         }
     }
     return(true);
 }