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
- TextTreeTextElementNode.cs
- RoutedEventArgs.cs
- MessageSecurityProtocol.cs
- Ipv6Element.cs
- FormViewDeleteEventArgs.cs
- RewritingPass.cs
- _TLSstream.cs
- CodeTypeParameter.cs
- GridViewUpdateEventArgs.cs
- DeclarationUpdate.cs
- DelegateHelpers.cs
- DataContractSerializerOperationBehavior.cs
- CompilerParameters.cs
- CollectionBuilder.cs
- MyContact.cs
- ArrayConverter.cs
- TableCell.cs
- IndexOutOfRangeException.cs
- SafeWaitHandle.cs
- MultilineStringConverter.cs
- Utils.cs
- Msec.cs
- VersionUtil.cs
- TextTreeNode.cs
- DataGridViewCellMouseEventArgs.cs
- SecurityCriticalDataForSet.cs
- CommandBinding.cs
- InputReferenceExpression.cs
- GeneratedCodeAttribute.cs
- ObjectStateFormatter.cs
- LinqDataSourceInsertEventArgs.cs
- DataObjectPastingEventArgs.cs
- coordinatorscratchpad.cs
- Int32RectValueSerializer.cs
- NCryptSafeHandles.cs
- PersonalizationProvider.cs
- MetadataHelper.cs
- XmlChildNodes.cs
- InternalConfigHost.cs
- IProvider.cs
- ReachPageContentCollectionSerializer.cs
- ItemMap.cs
- ControlBuilderAttribute.cs
- CompositeDataBoundControl.cs
- PingReply.cs
- DBCSCodePageEncoding.cs
- XmlSortKey.cs
- StylusPointCollection.cs
- ExpressionEditorAttribute.cs
- CustomTypeDescriptor.cs
- XmlSchemaCollection.cs
- Filter.cs
- TreeNodeCollection.cs
- IriParsingElement.cs
- InvalidCommandTreeException.cs
- TcpProcessProtocolHandler.cs
- WebSysDefaultValueAttribute.cs
- GeneralTransform3DTo2DTo3D.cs
- XmlSubtreeReader.cs
- HeaderedContentControl.cs
- NavigationCommands.cs
- BinHexDecoder.cs
- SymbolEqualComparer.cs
- COM2EnumConverter.cs
- DbInsertCommandTree.cs
- BooleanExpr.cs
- GridItemPatternIdentifiers.cs
- ImportContext.cs
- XmlSchemaType.cs
- LinkConverter.cs
- LicenseProviderAttribute.cs
- InputGestureCollection.cs
- ParallelTimeline.cs
- CollectionChangedEventManager.cs
- ImplicitInputBrush.cs
- ResolveNameEventArgs.cs
- ElementUtil.cs
- DataTableTypeConverter.cs
- PairComparer.cs
- ComEventsSink.cs
- ContactManager.cs
- ParameterBuilder.cs
- DataColumnChangeEvent.cs
- WebPartTransformer.cs
- StandardBindingCollectionElement.cs
- _SslSessionsCache.cs
- PointAnimationUsingPath.cs
- HostedElements.cs
- CustomExpression.cs
- HostingEnvironmentWrapper.cs
- RecommendedAsConfigurableAttribute.cs
- XmlSchemaSimpleContentExtension.cs
- CellIdBoolean.cs
- WorkflowInstanceAbortedRecord.cs
- IsolatedStorageFile.cs
- MatrixValueSerializer.cs
- TypeConverterHelper.cs
- SamlSerializer.cs
- TreeNodeEventArgs.cs
- Debugger.cs