public FileSystemItemBase(IDirectoryInfo directory, string name, IFileSystemItem parent, bool isValid, TryCreateFileSystemItem tryCreateChild = null)
        {
            Directory          = directory;
            Name               = name;
            Parent             = parent;
            _itemItselfIsValid = isValid;

            if (tryCreateChild != null)
            {
                Children = directory.GetChildrenFileSystemItems(this, tryCreateChild);
            }
            else
            {
                Children = ImmutableList <IFileSystemItem> .Empty;
            }

            UpdateIsValid();
        }
Beispiel #2
0
        public static IImmutableList <IFileSystemItem> GetChildrenFileSystemItems(this IDirectoryInfo self, IFileSystemItem parent, TryCreateFileSystemItem tryCreateChild)
        {
            var items = new List <IFileSystemItem>();

            var subDirectories = self.GetDirectories();

            foreach (var subDirectory in subDirectories)
            {
                var created = tryCreateChild(subDirectory, parent, out var item);
                if (created)
                {
                    items.Add(item);
                }
                else
                {
                    var invalidItem = new InvalidFileSystemItem(subDirectory, parent);
                    items.Add(invalidItem);
                }
            }

            return(items.ToImmutableList());
        }