Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / AddIn / AddIn / System / Addin / Hosting / ContravarianceAdapter.cs / 1305376 / ContravarianceAdapter.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Value Type: ContravarianceAdapter ** ** Purpose: To convert an IEnumerableto an IEnumerable ** ===========================================================*/ using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics.Contracts; namespace System.AddIn.Hosting { internal struct ContravarianceAdapter : IEnumerable where Derived : Base { private IEnumerable _enumerable; internal ContravarianceAdapter(IEnumerable collection) { _enumerable = collection; } public IEnumerator GetEnumerator() { return new ContravariantEnumerator(_enumerable.GetEnumerator()); } IEnumerator IEnumerable.GetEnumerator() { return new ContravariantEnumerator(_enumerable.GetEnumerator()); } internal struct ContravariantEnumerator : IEnumerator { IEnumerator _enumerator; internal ContravariantEnumerator(IEnumerator enumerator) { _enumerator = enumerator; } public bool MoveNext() { return _enumerator.MoveNext(); } public Derived Current { get { return (Derived)_enumerator.Current; } } Object IEnumerator.Current { get { return ((IEnumerator)_enumerator).Current; } } public void Reset() { _enumerator.Reset(); } public void Dispose() { _enumerator.Dispose(); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Value Type: ContravarianceAdapter ** ** Purpose: To convert an IEnumerable to an IEnumerable ** ===========================================================*/ using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics.Contracts; namespace System.AddIn.Hosting { internal struct ContravarianceAdapter : IEnumerable where Derived : Base { private IEnumerable _enumerable; internal ContravarianceAdapter(IEnumerable collection) { _enumerable = collection; } public IEnumerator GetEnumerator() { return new ContravariantEnumerator(_enumerable.GetEnumerator()); } IEnumerator IEnumerable.GetEnumerator() { return new ContravariantEnumerator(_enumerable.GetEnumerator()); } internal struct ContravariantEnumerator : IEnumerator { IEnumerator _enumerator; internal ContravariantEnumerator(IEnumerator enumerator) { _enumerator = enumerator; } public bool MoveNext() { return _enumerator.MoveNext(); } public Derived Current { get { return (Derived)_enumerator.Current; } } Object IEnumerator.Current { get { return ((IEnumerator)_enumerator).Current; } } public void Reset() { _enumerator.Reset(); } public void Dispose() { _enumerator.Dispose(); } } } } // 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
- IgnoreFileBuildProvider.cs
- BamlLocalizabilityResolver.cs
- Int32Storage.cs
- Page.cs
- AnonymousIdentificationModule.cs
- SoundPlayerAction.cs
- RelationshipType.cs
- DockingAttribute.cs
- CallbackHandler.cs
- RowParagraph.cs
- columnmapkeybuilder.cs
- PeerNameRecordCollection.cs
- ValidationError.cs
- NativeMethods.cs
- EdmFunction.cs
- RecommendedAsConfigurableAttribute.cs
- BitmapMetadataEnumerator.cs
- ExpressionBuilderContext.cs
- BookmarkUndoUnit.cs
- DbResourceAllocator.cs
- ListViewItemSelectionChangedEvent.cs
- Int64KeyFrameCollection.cs
- SelectedCellsCollection.cs
- SoapIncludeAttribute.cs
- BindingWorker.cs
- DefaultTraceListener.cs
- Win32Exception.cs
- XmlSchemaCollection.cs
- RequestSecurityTokenForRemoteTokenFactory.cs
- XPathSelectionIterator.cs
- DesignerActionService.cs
- SqlParameter.cs
- TemplateBindingExtension.cs
- DynamicValidator.cs
- DocumentXPathNavigator.cs
- Timer.cs
- SelectedDatesCollection.cs
- PointAnimationBase.cs
- AssemblyInfo.cs
- SQlBooleanStorage.cs
- Queue.cs
- RelationshipConverter.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- SelectingProviderEventArgs.cs
- PropertyEmitter.cs
- Vector3DAnimationBase.cs
- Cloud.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- AsymmetricKeyExchangeDeformatter.cs
- TextEffect.cs
- DataGridViewCellStyle.cs
- UpdatePanelTriggerCollection.cs
- ClientScriptManagerWrapper.cs
- InkSerializer.cs
- AllMembershipCondition.cs
- QueryExpr.cs
- XmlQueryType.cs
- WebBrowserDocumentCompletedEventHandler.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- ConfigurationConverterBase.cs
- ChannelManager.cs
- MimeAnyImporter.cs
- Socket.cs
- DataColumnMapping.cs
- XmlSequenceWriter.cs
- HwndHostAutomationPeer.cs
- LinqTreeNodeEvaluator.cs
- TypeSystemHelpers.cs
- DataGridViewHitTestInfo.cs
- SrgsText.cs
- WebHttpSecurity.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- ResourceDescriptionAttribute.cs
- COSERVERINFO.cs
- GenericWebPart.cs
- OrderPreservingMergeHelper.cs
- XmlDictionaryReaderQuotas.cs
- FontInfo.cs
- WebPartMovingEventArgs.cs
- ObjectQuery.cs
- SafeProcessHandle.cs
- ThicknessAnimationBase.cs
- Scripts.cs
- RelationshipEntry.cs
- WebPartMinimizeVerb.cs
- SafePipeHandle.cs
- RuleProcessor.cs
- XmlReader.cs
- Freezable.cs
- EntityTypeEmitter.cs
- NumberFunctions.cs
- Int32RectConverter.cs
- PersistenceTypeAttribute.cs
- LoginAutoFormat.cs
- ArraySegment.cs
- RtType.cs
- SqlMethodCallConverter.cs
- BoundConstants.cs
- KnownBoxes.cs
- DefaultObjectMappingItemCollection.cs