//------------------------------------------------------ // // Public Constructors // //------------------------------------------------------ // None //------------------------------------------------------ // // Public Properties // //------------------------------------------------------ // None //------------------------------------------------------ // // Public Methods // //------------------------------------------------------ #region Public Methods /// <summary> /// Custom Implementation for the GetStream Method /// </summary> /// <param name="mode">Mode in which the stream should be opened</param> /// <param name="access">Access with which the stream should be opened</param> /// <returns>Stream Corresponding to this part</returns> protected override Stream GetStreamCore(FileMode mode, FileAccess access) { if (Package.InStreamingCreation) { // Convert Metro CompressionOption to Zip CompressionMethodEnum. CompressionMethodEnum compressionMethod; DeflateOptionEnum deflateOption; ZipPackage.GetZipCompressionMethodFromOpcCompressionOption(this.CompressionOption, out compressionMethod, out deflateOption); // Mode and access get validated in StreamingZipPartStream(). return(new StreamingZipPartStream( PackUriHelper.GetStringForPartUri(this.Uri), _zipArchive, compressionMethod, deflateOption, mode, access)); } else if (_zipFileInfo != null) { // Case of an atomic part. return(_zipFileInfo.GetStream(mode, access)); } else { // Case of an interleaved part. Invariant.Assert(_pieces != null); return(new InterleavedZipPartStream(this, mode, access)); } }