public FileContainer(PathPart parent, string name) : base(name) { Parent = parent; Parent.Add(this); if (this != MappedData.AddData(this)) { throw new Exception("Duplicated."); } }
PathPart AddNodes(PathPart current, IList <string> pathParts) { var res = current; var i = 0; if (current == null) { res = Drives[Drives.Add(new DriveContainer(pathParts[i++]))]; } for (; i < pathParts.Count; i++) { res = new DirectoryContainer(res, pathParts[i]); } return(res); }
public DirectoryContainer(PathPart parent, string name) : base(name) { Parent = parent; Parent.Add(this); }
PathPart Extend(PathPart path, IList <string> toPathParts) => AddNodes(path, path == null ? toPathParts : toPathParts.Skip(path.FullPathParts.Length).ToArray());
PathPart Extend(PathPart path, string ToPath) => Extend(path, ToPath.PathParts());