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
- ObjectKeyFrameCollection.cs
- RbTree.cs
- IPPacketInformation.cs
- HwndKeyboardInputProvider.cs
- StandardToolWindows.cs
- BitmapEffectDrawingContent.cs
- SymLanguageVendor.cs
- SizeValueSerializer.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- SqlRetyper.cs
- TextEffect.cs
- BufferAllocator.cs
- SortedList.cs
- ConfigurationHandlersInstallComponent.cs
- WindowsComboBox.cs
- GridViewCellAutomationPeer.cs
- XmlRootAttribute.cs
- DynamicDocumentPaginator.cs
- StreamGeometry.cs
- ViewDesigner.cs
- GCHandleCookieTable.cs
- XPathDocumentBuilder.cs
- SignedXml.cs
- BreakSafeBase.cs
- DrawingVisual.cs
- ValidationErrorInfo.cs
- WindowsUserNameSecurityTokenAuthenticator.cs
- OneOfElement.cs
- DebugManager.cs
- BroadcastEventHelper.cs
- CommandManager.cs
- XmlSchemaSet.cs
- AdCreatedEventArgs.cs
- CommonRemoteMemoryBlock.cs
- NativeMethods.cs
- RedBlackList.cs
- ProcessHostFactoryHelper.cs
- NameValueSectionHandler.cs
- Attachment.cs
- ToolStripScrollButton.cs
- HttpRequest.cs
- SystemIPInterfaceProperties.cs
- AccessDataSource.cs
- NameObjectCollectionBase.cs
- TrustLevel.cs
- externdll.cs
- WindowsToolbar.cs
- returneventsaver.cs
- PointAnimationUsingPath.cs
- RichTextBoxContextMenu.cs
- Span.cs
- TitleStyle.cs
- MD5CryptoServiceProvider.cs
- RenderTargetBitmap.cs
- cookiecollection.cs
- WebPartTransformerAttribute.cs
- ErrorFormatterPage.cs
- Adorner.cs
- TableCellCollection.cs
- UnmanagedHandle.cs
- LayoutManager.cs
- PenLineJoinValidation.cs
- ConnectionStringSettingsCollection.cs
- ApplicationException.cs
- TransformerInfoCollection.cs
- EventManager.cs
- OdbcReferenceCollection.cs
- DataGridViewCellCancelEventArgs.cs
- SessionStateUtil.cs
- CollectionChangeEventArgs.cs
- PerformanceCounterNameAttribute.cs
- XamlParser.cs
- DiscardableAttribute.cs
- TextEditor.cs
- XmlHierarchicalEnumerable.cs
- WebBrowserNavigatedEventHandler.cs
- DataBindingHandlerAttribute.cs
- PartitionResolver.cs
- BrowserInteropHelper.cs
- HttpValueCollection.cs
- TextMessageEncodingBindingElement.cs
- GridViewPageEventArgs.cs
- InitiatorSessionSymmetricTransportSecurityProtocol.cs
- TableRowsCollectionEditor.cs
- BinaryNode.cs
- EdmItemError.cs
- Exceptions.cs
- ConfigViewGenerator.cs
- DataGridViewButtonCell.cs
- GeneralTransform3D.cs
- EdmItemCollection.cs
- ColumnBinding.cs
- ControlPaint.cs
- DbConnectionPoolGroup.cs
- PixelShader.cs
- Dynamic.cs
- ProviderException.cs
- StringFreezingAttribute.cs
- SQLCharsStorage.cs
- XmlSerializationReader.cs