public IFile GetFile(string filePath) { var resolviedFilePath = Path.GetFullPath(Path.Combine(CurrentDirectory, filePath)); var pathSegments = new LocalPath(resolviedFilePath).Segments; var ownerFolder = pathSegments .Skip(1).Take(pathSegments.Count()-2) .Aggregate((IDirectory)GetRoot(pathSegments.First()), (current, segment) => current.GetDirectory(segment)); return ownerFolder.GetFile(pathSegments.Last()); }