public static async Task <IReadOnlyCollection <IFileSystemChild> > GetChildren(this IFileSystemViewModelFactory factory, IFileSystemParent parent, IReadOnlyCollection <FileAttributes> fileAttributes, IReadOnlyCollection <FileAttributes> folderAttributes)
        {
            if (await factory.IsEmpty(parent))
            {
                return(Enumerable.Empty <IFileSystemChild>().ToList());
            }

            var directories = factory.GetDirectories(parent, fileAttributes, folderAttributes);
            var files       = factory.GetFiles(parent, fileAttributes);

            await Task.WhenAll(directories, files);

            var results = new List <IFileSystemChild>(directories.Result.Count + files.Result.Count);

            results.AddRange(directories.Result);
            results.AddRange(files.Result);

            return(results);
        }
Ejemplo n.º 2
0
        public ScarletDirectory(DirectoryInfo info, IReadOnlyCollection <FileAttributes> fileAttributes, IReadOnlyCollection <FileAttributes> folderAttributes, IFileSystemParent parent, IScarletCommandBuilder commandBuilder, IFileSystemViewModelFactory factory)
            : base(commandBuilder)
        {
            _factory  = factory ?? throw new ArgumentNullException(nameof(factory));
            _name     = info.Name ?? throw new ArgumentException(nameof(info.Name));
            _fullName = info.FullName ?? throw new ArgumentException(info.FullName);
            _parent   = parent ?? throw new ArgumentNullException(nameof(parent));

            _fileAttributes   = fileAttributes;
            _folderAttributes = folderAttributes;
            IsContainer       = true;

            Set(info);
        }