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
- SqlDataSourceCustomCommandPanel.cs
- MenuCommandsChangedEventArgs.cs
- XmlSchemaInferenceException.cs
- Calendar.cs
- NumericUpDownAccelerationCollection.cs
- SQLGuid.cs
- TextTreeTextNode.cs
- LogConverter.cs
- StringCollection.cs
- CodeGen.cs
- coordinatorscratchpad.cs
- WindowsBrush.cs
- PolicyAssertionCollection.cs
- DocumentOrderQuery.cs
- MetadataUtil.cs
- WorkflowDesignerColors.cs
- ADMembershipUser.cs
- RenderData.cs
- ResourcesBuildProvider.cs
- ConfigXmlSignificantWhitespace.cs
- Merger.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- UshortList2.cs
- ObjectConverter.cs
- PathSegmentCollection.cs
- ProfilePropertyMetadata.cs
- TransformerInfoCollection.cs
- Encoder.cs
- DataViewListener.cs
- XmlNavigatorFilter.cs
- DataObjectMethodAttribute.cs
- Bits.cs
- ValidationResult.cs
- DataConnectionHelper.cs
- TypeExtensionConverter.cs
- Helper.cs
- AutoResizedEvent.cs
- TreeViewImageIndexConverter.cs
- querybuilder.cs
- WindowsListViewGroupHelper.cs
- SelectionRange.cs
- Maps.cs
- LinearGradientBrush.cs
- SqlNamer.cs
- Decoder.cs
- NativeMethods.cs
- ThrowHelper.cs
- FindProgressChangedEventArgs.cs
- SystemInfo.cs
- ConnectionStringSettings.cs
- DynamicField.cs
- CanonicalFontFamilyReference.cs
- RequiredFieldValidator.cs
- MessagePartSpecification.cs
- DictionaryBase.cs
- CapabilitiesAssignment.cs
- Site.cs
- Scene3D.cs
- NoPersistProperty.cs
- SqlConnectionFactory.cs
- AnimationTimeline.cs
- DecodeHelper.cs
- Encoder.cs
- PerformanceCounterManager.cs
- FolderLevelBuildProviderCollection.cs
- SizeLimitedCache.cs
- JsonUriDataContract.cs
- XhtmlTextWriter.cs
- AsymmetricSignatureFormatter.cs
- IgnoreDeviceFilterElement.cs
- XslAst.cs
- WizardForm.cs
- StoryFragments.cs
- WindowsToolbar.cs
- CompilationSection.cs
- SegmentInfo.cs
- MediaElementAutomationPeer.cs
- RC2.cs
- QilReference.cs
- XsdValidatingReader.cs
- ChildDocumentBlock.cs
- CodeChecksumPragma.cs
- WsdlInspector.cs
- XmlSchemaDatatype.cs
- PathFigure.cs
- NetworkAddressChange.cs
- ImportedPolicyConversionContext.cs
- RevocationPoint.cs
- UIElement.cs
- RandomNumberGenerator.cs
- PeerEndPoint.cs
- InheritanceUI.cs
- CompoundFileDeflateTransform.cs
- KnownTypeDataContractResolver.cs
- SecurityContextSecurityTokenAuthenticator.cs
- Int32AnimationBase.cs
- FieldMetadata.cs
- OperatingSystemVersionCheck.cs
- SqlClientPermission.cs
- Int16KeyFrameCollection.cs