コード例 #1
0
        public static List <ItemDeclaration> SearchTree(this ItemDeclaration item, Func <ItemDeclaration, bool> func)
        {
            var foundList = new List <ItemDeclaration>();

            if (func(item))
            {
                foundList.Add(item);
            }

            if (item is DeclarationContainer container)
            {
                foreach (var childItem in container.Declarations)
                {
                    var moreFound = SearchTree(childItem, func);
                    if (moreFound != null)
                    {
                        foundList.AddRange(moreFound);
                    }
                }
            }

            return(foundList);
        }
コード例 #2
0
        public static ItemDeclaration FindByFullName(this ItemDeclaration item, string fullName)
        {
            if (item.FullName.Equals(fullName, StringComparison.InvariantCultureIgnoreCase))
            {
                return(item);
            }

            if (item is DeclarationContainer containing)
            {
                if (fullName.StartsWith(containing.FullName, StringComparison.InvariantCultureIgnoreCase))
                {
                    foreach (var childItem in containing.Declarations)
                    {
                        var rtn = FindByFullName(childItem, fullName);
                        if (rtn != null)
                        {
                            return(rtn);
                        }
                    }
                }
            }

            return(null);
        }