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
- FileStream.cs
- Viewport2DVisual3D.cs
- TableLayout.cs
- Math.cs
- ChannelManager.cs
- MessagePropertyDescriptionCollection.cs
- RefreshInfo.cs
- CodeTypeDeclarationCollection.cs
- SQLInt16Storage.cs
- DataServiceContext.cs
- SqlBooleanMismatchVisitor.cs
- EventLog.cs
- ListBox.cs
- DataGridViewDataErrorEventArgs.cs
- TextEffect.cs
- WindowsImpersonationContext.cs
- PermissionAttributes.cs
- ExtendedProtectionPolicy.cs
- CompilerGlobalScopeAttribute.cs
- ObjectListGeneralPage.cs
- CalloutQueueItem.cs
- DiagnosticTraceRecords.cs
- UriScheme.cs
- SystemFonts.cs
- EntityUtil.cs
- COM2IProvidePropertyBuilderHandler.cs
- MultiPartWriter.cs
- GridSplitter.cs
- IntSumAggregationOperator.cs
- ProtocolImporter.cs
- CodeSnippetTypeMember.cs
- basevalidator.cs
- Formatter.cs
- errorpatternmatcher.cs
- Form.cs
- TextServicesCompartment.cs
- RemotingConfiguration.cs
- Serializer.cs
- AssemblyNameProxy.cs
- WS2007HttpBindingElement.cs
- X500Name.cs
- AudioDeviceOut.cs
- BaseAddressPrefixFilterElement.cs
- FixedSOMTableCell.cs
- SystemColors.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- AsyncPostBackTrigger.cs
- SamlAuthorizationDecisionClaimResource.cs
- PasswordPropertyTextAttribute.cs
- ObfuscateAssemblyAttribute.cs
- DeclaredTypeValidatorAttribute.cs
- IdentityValidationException.cs
- GraphicsContext.cs
- NameTable.cs
- PathGradientBrush.cs
- KeyboardEventArgs.cs
- ByteConverter.cs
- PageThemeCodeDomTreeGenerator.cs
- AnnotationMap.cs
- SqlStatistics.cs
- XPathNavigator.cs
- Point4DConverter.cs
- TemplateComponentConnector.cs
- SqlError.cs
- PropertyEntry.cs
- MessageBox.cs
- SchemaImporterExtensionElement.cs
- ContractTypeNameCollection.cs
- CornerRadius.cs
- StructureChangedEventArgs.cs
- SamlAdvice.cs
- log.cs
- DBSqlParserTable.cs
- InstancePersistenceException.cs
- MissingMemberException.cs
- ResXResourceSet.cs
- ComPlusDiagnosticTraceRecords.cs
- PropertyEmitterBase.cs
- CreateRefExpr.cs
- VectorCollectionValueSerializer.cs
- ValueQuery.cs
- JsonDeserializer.cs
- ActivityCollectionMarkupSerializer.cs
- RoleService.cs
- Debug.cs
- UnionCodeGroup.cs
- PermissionSet.cs
- OracleException.cs
- LoadWorkflowCommand.cs
- StylusPointProperty.cs
- DbDataReader.cs
- ExpandCollapsePattern.cs
- Matrix.cs
- AutomationProperties.cs
- DebugHandleTracker.cs
- Size3DConverter.cs
- XmlSchemaType.cs
- QilCloneVisitor.cs
- RouteParameter.cs
- ObjectViewFactory.cs