Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Base / MS / Internal / IO / Packaging / CompoundFile / StreamWithDictionary.cs / 1 / StreamWithDictionary.cs
//------------------------------------------------------------------------------ // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // Description: // The object for wrapping a data stream and its associated context // information dictionary. // // History: // 07/05/2002: [....]: Initial implementation. // 05/20/2003: [....]: Ported to WCP tree. // //----------------------------------------------------------------------------- using System; using System.Collections; using System.IO; namespace MS.Internal.IO.Packaging.CompoundFile { internal class StreamWithDictionary : Stream, IDictionary { Stream baseStream; IDictionary baseDictionary; private bool _disposed; // keep track of if we are disposed internal StreamWithDictionary( Stream wrappedStream, IDictionary wrappedDictionary ) { baseStream = wrappedStream; baseDictionary = wrappedDictionary; } /*************************************************************************/ // Stream members public override bool CanRead { get{ return !_disposed && baseStream.CanRead; }} public override bool CanSeek { get { return !_disposed && baseStream.CanSeek; } } public override bool CanWrite { get { return !_disposed && baseStream.CanWrite; } } public override long Length { get { CheckDisposed(); return baseStream.Length; } } public override long Position { get { CheckDisposed(); return baseStream.Position; } set { CheckDisposed(); baseStream.Position = value; } } public override void Flush() { CheckDisposed(); baseStream.Flush(); } public override long Seek( long offset, SeekOrigin origin ) { CheckDisposed(); return baseStream.Seek(offset, origin); } public override void SetLength( long newLength ) { CheckDisposed(); baseStream.SetLength(newLength); } public override int Read( byte[] buffer, int offset, int count ) { CheckDisposed(); return baseStream.Read(buffer, offset, count); } public override void Write( byte[] buffer, int offset, int count ) { CheckDisposed(); baseStream.Write(buffer, offset, count); } //----------------------------------------------------- // // Protected Methods // //----------------------------------------------------- ////// Dispose(bool) /// /// protected override void Dispose(bool disposing) { try { if (disposing && !_disposed) { _disposed = true; baseStream.Close(); } } finally { base.Dispose(disposing); } } /*************************************************************************/ // IDictionary members bool IDictionary.Contains( object key ) { CheckDisposed(); return baseDictionary.Contains(key); } void IDictionary.Add( object key, object val ) { CheckDisposed(); baseDictionary.Add(key, val); } void IDictionary.Clear() { CheckDisposed(); baseDictionary.Clear(); } IDictionaryEnumerator IDictionary.GetEnumerator() { CheckDisposed(); // IDictionary.GetEnumerator vs. IEnumerable.GetEnumerator? return ((IDictionary)baseDictionary).GetEnumerator(); } void IDictionary.Remove( object key ) { CheckDisposed(); baseDictionary.Remove(key); } object IDictionary.this[ object index ] { get { CheckDisposed(); return baseDictionary[index]; } set { CheckDisposed(); baseDictionary[index] = value; } } ICollection IDictionary.Keys { get { CheckDisposed(); return baseDictionary.Keys; } } ICollection IDictionary.Values { get { CheckDisposed(); return baseDictionary.Values; } } bool IDictionary.IsReadOnly { get { CheckDisposed(); return baseDictionary.IsReadOnly; } } bool IDictionary.IsFixedSize { get { CheckDisposed(); return baseDictionary.IsFixedSize; } } /*************************************************************************/ // ICollection methods void ICollection.CopyTo( Array array, int index ) { CheckDisposed(); ((ICollection)baseDictionary).CopyTo(array, index); } int ICollection.Count { get { CheckDisposed(); return ((ICollection)baseDictionary).Count; } } object ICollection.SyncRoot { get { CheckDisposed(); return ((ICollection)baseDictionary).SyncRoot; } } bool ICollection.IsSynchronized { get { CheckDisposed(); return ((ICollection)baseDictionary).IsSynchronized; } } /*************************************************************************/ // IEnumerable method IEnumerator IEnumerable.GetEnumerator() { CheckDisposed(); return ((IEnumerable)baseDictionary).GetEnumerator(); } ////// Disposed - were we disposed? Offer this to DataSpaceManager so it can do smart flushing /// ///internal bool Disposed { get { return _disposed; } } //------------------------------------------------------ // // Private Methods // //----------------------------------------------------- private void CheckDisposed() { if (_disposed) throw new ObjectDisposedException("Stream"); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- LocalBuilder.cs
- CipherData.cs
- ControlPaint.cs
- DocumentViewerHelper.cs
- UserPreferenceChangedEventArgs.cs
- MimeBasePart.cs
- ISAPIRuntime.cs
- ClrPerspective.cs
- DtrList.cs
- SqlUtils.cs
- PersistenceTypeAttribute.cs
- DirectoryInfo.cs
- CommandHelper.cs
- Floater.cs
- InfoCardSymmetricAlgorithm.cs
- ConfigsHelper.cs
- CodeMemberField.cs
- LayoutEditorPart.cs
- EntityDataSourceContainerNameConverter.cs
- RowSpanVector.cs
- StopStoryboard.cs
- ReverseInheritProperty.cs
- ObsoleteAttribute.cs
- _RegBlobWebProxyDataBuilder.cs
- AudioBase.cs
- ListCardsInFileRequest.cs
- EntityClientCacheKey.cs
- RectangleConverter.cs
- SynchronizedInputPattern.cs
- SafeSystemMetrics.cs
- XmlSchemaAttributeGroup.cs
- PartBasedPackageProperties.cs
- EntityDataSourceWrapperPropertyDescriptor.cs
- SqlUDTStorage.cs
- SqlNode.cs
- MenuTracker.cs
- ComUdtElementCollection.cs
- SqlCommandBuilder.cs
- AttachedPropertyBrowsableAttribute.cs
- Viewport3DAutomationPeer.cs
- QilGeneratorEnv.cs
- CompositeDataBoundControl.cs
- StringStorage.cs
- NodeInfo.cs
- BaseDataBoundControl.cs
- WebPartVerbCollection.cs
- StringFunctions.cs
- SqlNodeAnnotations.cs
- ZoneLinkButton.cs
- ProcessHostMapPath.cs
- Stylesheet.cs
- TreeNodeBindingCollection.cs
- AppliedDeviceFiltersEditor.cs
- ServerProtocol.cs
- DeclarationUpdate.cs
- TextHidden.cs
- EntityStoreSchemaGenerator.cs
- ConfigurationStrings.cs
- CalloutQueueItem.cs
- sitestring.cs
- HtmlMeta.cs
- CoTaskMemHandle.cs
- StringValueSerializer.cs
- PropertyChangingEventArgs.cs
- RtfToXamlReader.cs
- TypeElement.cs
- BCLDebug.cs
- InvalidStoreProtectionKeyException.cs
- ImageIndexEditor.cs
- ZeroOpNode.cs
- ResXFileRef.cs
- AVElementHelper.cs
- FontStretch.cs
- PageBreakRecord.cs
- DesignerDataView.cs
- TrustLevel.cs
- OleDbDataAdapter.cs
- WorkflowInstanceAbortedRecord.cs
- EnlistmentTraceIdentifier.cs
- FixedSOMImage.cs
- Schema.cs
- HtmlInputHidden.cs
- querybuilder.cs
- ProviderConnectionPoint.cs
- ChooseAction.cs
- TreeViewCancelEvent.cs
- InternalException.cs
- DeobfuscatingStream.cs
- DatatypeImplementation.cs
- SqlClientPermission.cs
- TextEffect.cs
- DataContractSet.cs
- AspNetHostingPermission.cs
- SchemaTypeEmitter.cs
- SqlDelegatedTransaction.cs
- ObjectNotFoundException.cs
- ToolStripDropDownMenu.cs
- CodeEventReferenceExpression.cs
- PageThemeBuildProvider.cs
- StringExpressionSet.cs