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
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SessionPageStateSection.cs
- MethodCallConverter.cs
- WebPartCollection.cs
- WebPartCollection.cs
- CollectionBuilder.cs
- DocumentXmlWriter.cs
- VersionConverter.cs
- IdentitySection.cs
- DrawingCollection.cs
- TracedNativeMethods.cs
- HScrollBar.cs
- DoubleSumAggregationOperator.cs
- ListItemCollection.cs
- TimeSpanValidatorAttribute.cs
- InternalConfigEventArgs.cs
- WpfPayload.cs
- ToolStripSeparator.cs
- RoutedEventConverter.cs
- UnauthorizedWebPart.cs
- RadioButton.cs
- File.cs
- ArrayTypeMismatchException.cs
- ClientScriptItem.cs
- ServiceDescriptions.cs
- StrongNameUtility.cs
- FaultBookmark.cs
- XmlSerializerNamespaces.cs
- FusionWrap.cs
- Collection.cs
- selecteditemcollection.cs
- Stackframe.cs
- LeftCellWrapper.cs
- Light.cs
- URL.cs
- RegisteredScript.cs
- PropertyPath.cs
- DesignerDataSourceView.cs
- HtmlSelectionListAdapter.cs
- DataComponentMethodGenerator.cs
- FrugalMap.cs
- CodeChecksumPragma.cs
- MessageBodyDescription.cs
- TextModifierScope.cs
- ObjectAnimationUsingKeyFrames.cs
- FlowNode.cs
- SqlPersonalizationProvider.cs
- CompositeClientFormatter.cs
- AspNetSynchronizationContext.cs
- XmlArrayAttribute.cs
- ScriptResourceHandler.cs
- ProcessHostFactoryHelper.cs
- SettingsBindableAttribute.cs
- RegistrySecurity.cs
- SqlSelectStatement.cs
- ReflectionTypeLoadException.cs
- GradientStopCollection.cs
- EpmTargetPathSegment.cs
- WithStatement.cs
- Process.cs
- DataGridViewRowsAddedEventArgs.cs
- Clipboard.cs
- DockingAttribute.cs
- XamlTreeBuilder.cs
- IResourceProvider.cs
- DecryptedHeader.cs
- NavigationProperty.cs
- DataFieldConverter.cs
- documentsequencetextpointer.cs
- RIPEMD160.cs
- NetNamedPipeSecurity.cs
- OpCopier.cs
- ApplicationServiceHelper.cs
- _SpnDictionary.cs
- FormattedText.cs
- MulticastDelegate.cs
- BindingWorker.cs
- HelpInfo.cs
- GregorianCalendar.cs
- FrameworkElement.cs
- PrinterSettings.cs
- ExpressionUtilities.cs
- ProfessionalColorTable.cs
- ConnectionManagementElementCollection.cs
- DocumentGrid.cs
- _NestedMultipleAsyncResult.cs
- ZipIOLocalFileHeader.cs
- AutoGeneratedField.cs
- DisplayInformation.cs
- BindingWorker.cs
- XmlFormatWriterGenerator.cs
- EmptyStringExpandableObjectConverter.cs
- QuadraticBezierSegment.cs
- CapabilitiesRule.cs
- CompareValidator.cs
- ParserStack.cs
- Tokenizer.cs
- FunctionParameter.cs
- BamlBinaryReader.cs
- EntityParameter.cs
- CredentialCache.cs