コード例 #1
0
        public IEnumerable <StreamAttributes> Enumerate(string underLogicalPath, EnumerateTypes types, bool recursive)
        {
            SearchOption searchOption = (recursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly);
            string       underPath    = PathCombineSandbox(underLogicalPath);

            if (Directory.Exists(underPath))
            {
                DirectoryInfo underDir = new DirectoryInfo(underPath);

                if (types.HasFlag(EnumerateTypes.File))
                {
                    foreach (FileInfo file in underDir.EnumerateFiles("*.*", searchOption))
                    {
                        yield return(Convert(file));
                    }
                }

                if (types.HasFlag(EnumerateTypes.Folder))
                {
                    foreach (DirectoryInfo folder in underDir.EnumerateDirectories("*.*", searchOption))
                    {
                        yield return(Convert(folder));
                    }
                }
            }
        }
コード例 #2
0
 public IEnumerable <StreamAttributes> Enumerate(string underLogicalPath, EnumerateTypes types, bool recursive)
 {
     return(_enumerateCache.GetOrBuild($"{recursive}|{types}|{underLogicalPath}", null, () =>
     {
         return _inner.Enumerate(underLogicalPath, types, recursive).ToList();
     }));
 }
コード例 #3
0
 public IEnumerable <StreamAttributes> Enumerate(string underLogicalPath, EnumerateTypes types, bool recursive)
 {
     // Enumerate items but make them look like the unpacked zip files
     foreach (StreamAttributes item in _inner.Enumerate(underLogicalPath, types, recursive))
     {
         if (item.Path.EndsWith(".zip"))
         {
             item.Path = item.Path.Substring(0, item.Path.Length - 4);
         }
         yield return(item);
     }
 }
コード例 #4
0
        public IEnumerable <StreamAttributes> Enumerate(string underLogicalPath, EnumerateTypes types, bool recursive)
        {
            // Track item paths we've already returned
            HashSet <string> pathsSeen = new HashSet <string>(StringComparer.OrdinalIgnoreCase);

            // Return all local items first
            foreach (StreamAttributes item in LocalProvider.Enumerate(underLogicalPath, types, recursive))
            {
                pathsSeen.Add(item.Path);
                yield return(item);
            }

            // Return remote items which we didn't already return seeing locally
            foreach (StreamAttributes remoteItem in RemoteProvider.Enumerate(underLogicalPath, types, recursive))
            {
                if (pathsSeen.Add(remoteItem.Path))
                {
                    yield return(remoteItem);
                }
            }
        }
コード例 #5
0
 public static void Main()
 {
     EnumerateTypes.Enumerate();
 }