Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Common / Utils / DisposableCollectionWrapper.cs / 1305376 / DisposableCollectionWrapper.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; namespace System.Data.Common.Utils { internal class DisposableCollectionWrapper: IDisposable, IEnumerable where T : IDisposable { IEnumerable _enumerable; internal DisposableCollectionWrapper(IEnumerable enumerable) { Debug.Assert(enumerable != null, "don't pass in a null enumerable"); _enumerable = enumerable; } public void Dispose() { // Technically, calling GC.SuppressFinalize is not required because the class does not // have a finalizer, but it does no harm, protects against the case where a finalizer is added // in the future, and prevents an FxCop warning. GC.SuppressFinalize(this); if(_enumerable != null) { foreach(T item in _enumerable) { if(item != null) { item.Dispose(); } } } } public IEnumerator GetEnumerator() { return _enumerable.GetEnumerator(); } System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return ((System.Collections.IEnumerable)_enumerable).GetEnumerator(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; namespace System.Data.Common.Utils { internal class DisposableCollectionWrapper: IDisposable, IEnumerable where T : IDisposable { IEnumerable _enumerable; internal DisposableCollectionWrapper(IEnumerable enumerable) { Debug.Assert(enumerable != null, "don't pass in a null enumerable"); _enumerable = enumerable; } public void Dispose() { // Technically, calling GC.SuppressFinalize is not required because the class does not // have a finalizer, but it does no harm, protects against the case where a finalizer is added // in the future, and prevents an FxCop warning. GC.SuppressFinalize(this); if(_enumerable != null) { foreach(T item in _enumerable) { if(item != null) { item.Dispose(); } } } } public IEnumerator GetEnumerator() { return _enumerable.GetEnumerator(); } System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return ((System.Collections.IEnumerable)_enumerable).GetEnumerator(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XamlClipboardData.cs
- SecurityManager.cs
- MenuCommandService.cs
- SessionStateSection.cs
- ContextInformation.cs
- Membership.cs
- ObjectMemberMapping.cs
- SmiTypedGetterSetter.cs
- XmlToDatasetMap.cs
- SecurityRuntime.cs
- DrawingGroupDrawingContext.cs
- TrustLevelCollection.cs
- FormsAuthenticationConfiguration.cs
- TakeOrSkipWhileQueryOperator.cs
- UserNamePasswordServiceCredential.cs
- Vector3DKeyFrameCollection.cs
- DesignerTransactionCloseEvent.cs
- ManualResetEventSlim.cs
- LicenseContext.cs
- IntSecurity.cs
- Accessible.cs
- RadioButtonFlatAdapter.cs
- InkCollectionBehavior.cs
- NaturalLanguageHyphenator.cs
- TriggerCollection.cs
- HandoffBehavior.cs
- BamlLocalizableResource.cs
- XmlWrappingReader.cs
- DataGridViewControlCollection.cs
- relpropertyhelper.cs
- ContainerCodeDomSerializer.cs
- UnwrappedTypesXmlSerializerManager.cs
- _FtpControlStream.cs
- AttributeProviderAttribute.cs
- ApplyTemplatesAction.cs
- InternalControlCollection.cs
- LiteralTextContainerControlBuilder.cs
- RemoteWebConfigurationHostStream.cs
- IdentifierCreationService.cs
- ViewEvent.cs
- DeviceSpecificChoiceCollection.cs
- Int32Rect.cs
- StylusPointProperties.cs
- ClaimTypeRequirement.cs
- TraceEventCache.cs
- regiisutil.cs
- ConnectionsZoneDesigner.cs
- XComponentModel.cs
- DesignerView.xaml.cs
- WebPartVerbCollection.cs
- RepeaterItem.cs
- QuaternionRotation3D.cs
- FastEncoderWindow.cs
- SymbolEqualComparer.cs
- DotAtomReader.cs
- ItemContainerGenerator.cs
- PrintingPermissionAttribute.cs
- WorkflowFileItem.cs
- ServiceOperationParameter.cs
- BoundsDrawingContextWalker.cs
- ControlBuilder.cs
- VisualStateGroup.cs
- XPathEmptyIterator.cs
- DefaultValidator.cs
- StringResourceManager.cs
- Timeline.cs
- TransformCryptoHandle.cs
- SystemResources.cs
- SqlWriter.cs
- Encoder.cs
- XmlStreamStore.cs
- XmlWellformedWriter.cs
- HtmlForm.cs
- MobileControlBuilder.cs
- DesignTableCollection.cs
- DataServiceOperationContext.cs
- BigInt.cs
- HyperLinkStyle.cs
- SoundPlayerAction.cs
- GridItemCollection.cs
- UriScheme.cs
- ExpressionTextBox.xaml.cs
- ExpressionEditorAttribute.cs
- Privilege.cs
- Serializer.cs
- Columns.cs
- QueryOptionExpression.cs
- DataGridViewLayoutData.cs
- Literal.cs
- WebBrowserUriTypeConverter.cs
- SymLanguageType.cs
- Stack.cs
- HostUtils.cs
- SymbolMethod.cs
- TimersDescriptionAttribute.cs
- SchemaManager.cs
- DeviceContext2.cs
- ObjectDataSourceSelectingEventArgs.cs
- DesignSurface.cs
- SizeAnimationClockResource.cs