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); }
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); }