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
- HttpWebRequest.cs
- OverlappedAsyncResult.cs
- SecurityCriticalDataForSet.cs
- Peer.cs
- _IPv4Address.cs
- WindowsEditBox.cs
- HttpModuleActionCollection.cs
- SmtpNtlmAuthenticationModule.cs
- TableLayoutSettingsTypeConverter.cs
- MultiSelectRootGridEntry.cs
- CacheOutputQuery.cs
- Mappings.cs
- SafeCryptoHandles.cs
- BackgroundFormatInfo.cs
- DataMemberConverter.cs
- ParserStack.cs
- SettingsPropertyCollection.cs
- Query.cs
- EtwProvider.cs
- Stacktrace.cs
- SystemEvents.cs
- SQLMembershipProvider.cs
- ZipIOExtraFieldPaddingElement.cs
- XmlSchemaGroupRef.cs
- AnnotationElement.cs
- DependencyPropertyDescriptor.cs
- DataGridParentRows.cs
- ResourceDescriptionAttribute.cs
- WpfGeneratedKnownTypes.cs
- SessionEndingEventArgs.cs
- Typeface.cs
- HtmlInputReset.cs
- ShapingEngine.cs
- CopyAttributesAction.cs
- DetailsViewDeleteEventArgs.cs
- UserUseLicenseDictionaryLoader.cs
- ReflectPropertyDescriptor.cs
- HTTPRemotingHandler.cs
- InvokeMethodDesigner.xaml.cs
- PlatformNotSupportedException.cs
- RowTypeElement.cs
- SplitContainer.cs
- FunctionQuery.cs
- PropertyIdentifier.cs
- ActiveDocumentEvent.cs
- EnumMemberAttribute.cs
- ThreadStartException.cs
- SerializationSectionGroup.cs
- CroppedBitmap.cs
- OverflowException.cs
- PseudoWebRequest.cs
- RegionInfo.cs
- TreeSet.cs
- BlurBitmapEffect.cs
- XmlBindingWorker.cs
- _Connection.cs
- ImmutableObjectAttribute.cs
- PrintingPermission.cs
- DataGridViewCell.cs
- ConfigurationFileMap.cs
- ExpressionQuoter.cs
- ListBoxItemAutomationPeer.cs
- CompilerScopeManager.cs
- Int64Converter.cs
- StandardMenuStripVerb.cs
- SchemaComplexType.cs
- AsynchronousChannelMergeEnumerator.cs
- SignedXml.cs
- EntityDataSourceChangingEventArgs.cs
- ClientTargetCollection.cs
- X509Utils.cs
- DataTrigger.cs
- ContractMapping.cs
- precedingsibling.cs
- InheritedPropertyChangedEventArgs.cs
- TableItemPatternIdentifiers.cs
- KernelTypeValidation.cs
- DataGridViewAutoSizeModeEventArgs.cs
- WhitespaceRuleReader.cs
- InertiaRotationBehavior.cs
- VBCodeProvider.cs
- IUnknownConstantAttribute.cs
- _DomainName.cs
- PersistenceTypeAttribute.cs
- PreviousTrackingServiceAttribute.cs
- NativeMethods.cs
- TextReader.cs
- ListBindingHelper.cs
- SqlClientFactory.cs
- XsdBuildProvider.cs
- SkipQueryOptionExpression.cs
- XamlPointCollectionSerializer.cs
- DataSourceControl.cs
- AesCryptoServiceProvider.cs
- Profiler.cs
- XPathDocumentBuilder.cs
- UserPreferenceChangingEventArgs.cs
- Types.cs
- processwaithandle.cs
- DataGridViewToolTip.cs