/// <summary> /// Uses a CompressionEngine to get ArchiveFileInfo objects from this /// archive, and then associates them with this ArchiveInfo instance. /// </summary> /// <param name="fileFilter">Optional predicate that can determine /// which files to process.</param> /// <returns>A list of <see cref="ArchiveFileInfo"/> objects, each /// containing information about a file in the archive.</returns> private IList <ArchiveFileInfo> InternalGetFiles(Predicate <string> fileFilter) { using (CompressionEngine compressionEngine = CreateCompressionEngine()) { ArchiveFileStreamContext streamContext = new ArchiveFileStreamContext(FullName, null, null); streamContext.EnableOffsetOpen = true; IList <ArchiveFileInfo> files = compressionEngine.GetFileInfo(streamContext, fileFilter); for (int i = 0; i < files.Count; i++) { files[i].Archive = this; } return(files); } }