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
- MemberProjectionIndex.cs
- MailBnfHelper.cs
- CompositeCollectionView.cs
- PanelContainerDesigner.cs
- PkcsMisc.cs
- Viewport2DVisual3D.cs
- WebPartDescription.cs
- XmlConverter.cs
- Speller.cs
- OracleParameterCollection.cs
- ArrayList.cs
- FixedSOMPageConstructor.cs
- entityreference_tresulttype.cs
- LayoutEditorPart.cs
- DataGridViewTextBoxCell.cs
- ItemContainerPattern.cs
- ErrorWrapper.cs
- MailFileEditor.cs
- AutomationElementCollection.cs
- CodeDomSerializerBase.cs
- RequestSecurityTokenResponse.cs
- Splitter.cs
- ImageBrush.cs
- Root.cs
- DesignerSerializationOptionsAttribute.cs
- GridViewUpdatedEventArgs.cs
- EncodingInfo.cs
- XmlSortKey.cs
- MarkupCompilePass2.cs
- HtmlControl.cs
- updateconfighost.cs
- WindowsSecurityToken.cs
- InputLanguageManager.cs
- Sentence.cs
- ExpressionNode.cs
- AssemblyAttributes.cs
- RegexWorker.cs
- NavigationCommands.cs
- counter.cs
- TreeViewImageKeyConverter.cs
- DataGridColumn.cs
- MediaPlayer.cs
- RSACryptoServiceProvider.cs
- NotCondition.cs
- OleAutBinder.cs
- ListChunk.cs
- COM2TypeInfoProcessor.cs
- TextRangeEditTables.cs
- FormattedTextSymbols.cs
- LoginCancelEventArgs.cs
- NavigationProgressEventArgs.cs
- DataGridCommandEventArgs.cs
- RuntimeConfig.cs
- SkinBuilder.cs
- ConfigurationSettings.cs
- ProcessHostServerConfig.cs
- SqlSupersetValidator.cs
- MetaModel.cs
- DataSpaceManager.cs
- Constants.cs
- SQLBytesStorage.cs
- AesCryptoServiceProvider.cs
- PropertyValueUIItem.cs
- BindingCollection.cs
- ProcessMonitor.cs
- NoneExcludedImageIndexConverter.cs
- ProcessThreadCollection.cs
- AspProxy.cs
- UnauthorizedWebPart.cs
- DivideByZeroException.cs
- PermissionRequestEvidence.cs
- WebDescriptionAttribute.cs
- IndexedGlyphRun.cs
- SQLDateTimeStorage.cs
- TransformConverter.cs
- TextCompositionEventArgs.cs
- BaseEntityWrapper.cs
- SchemaNames.cs
- ReadWriteObjectLock.cs
- XmlSerializer.cs
- Effect.cs
- counter.cs
- ArgumentNullException.cs
- AnimatedTypeHelpers.cs
- TableSectionStyle.cs
- ToolStripOverflow.cs
- DataGridBoolColumn.cs
- DataControlField.cs
- BindingList.cs
- TreeViewEvent.cs
- documentsequencetextpointer.cs
- OdbcConnectionPoolProviderInfo.cs
- Recipient.cs
- Timer.cs
- RegexStringValidatorAttribute.cs
- SecurityKeyUsage.cs
- StateChangeEvent.cs
- RelatedPropertyManager.cs
- TextEditorCharacters.cs
- XmlSchemaExporter.cs