Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Shared / MS / Internal / GenericEnumerator.cs / 1 / GenericEnumerator.cs
//------------------------------------------------------------------------------
// Microsoft Avalon
// Copyright (c) Microsoft Corporation, 2001
//
// File: GenericEnumerator.cs
//-----------------------------------------------------------------------------
using System;
using System.Collections;
using System.Diagnostics;
using System.Windows;
using MS.Utility;
#if PRESENTATION_CORE
using SR=MS.Internal.PresentationCore.SR;
using SRID=MS.Internal.PresentationCore.SRID;
#else
using SR=System.Windows.SR;
using SRID=System.Windows.SRID;
#endif
namespace MS.Internal
{
///
/// GenericEnumerator
///
internal class GenericEnumerator : IEnumerator
{
#region Delegates
internal delegate int GetGenerationIDDelegate();
#endregion
#region Constructors
private GenericEnumerator()
{
}
internal GenericEnumerator(IList array, GetGenerationIDDelegate getGenerationID)
{
_array = array;
_count = _array.Count;
_position = -1;
_getGenerationID = getGenerationID;
_originalGenerationID = _getGenerationID();
}
#endregion
#region Private
private void VerifyCurrent()
{
if ( (-1 == _position)
|| (_position >= _count))
{
throw new InvalidOperationException(SR.Get(SRID.Enumerator_VerifyContext));
}
}
#endregion
#region IEnumerator
///
/// Returns the object at the current location of the key times list.
/// Use the strongly typed version instead.
///
object
IEnumerator.Current
{
get
{
VerifyCurrent();
return _current;
}
}
///
/// Move to the next value in the key times list
///
/// true if succeeded, false if at the end of the list
public bool MoveNext()
{
if (_getGenerationID() != _originalGenerationID)
{
throw new InvalidOperationException(SR.Get(SRID.Enumerator_CollectionChanged));
}
_position++;
if (_position >= _count)
{
_position = _count;
return false;
}
else
{
Debug.Assert(_position >= 0);
_current = _array[_position];
return true;
}
}
///
/// Move to the position before the first value in the list.
///
public void Reset()
{
if (_getGenerationID() != _originalGenerationID)
{
throw new InvalidOperationException(SR.Get(SRID.Enumerator_CollectionChanged));
}
else
{
_position = -1;
}
}
#endregion
#region Data
private IList _array;
private object _current;
private int _count;
private int _position;
private int _originalGenerationID;
private GetGenerationIDDelegate _getGenerationID;
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PagesSection.cs
- HttpStreamXmlDictionaryWriter.cs
- XmlTextEncoder.cs
- XmlSerializerSection.cs
- SliderAutomationPeer.cs
- SponsorHelper.cs
- Scripts.cs
- processwaithandle.cs
- HelloOperationCD1AsyncResult.cs
- LiteralTextParser.cs
- MissingMethodException.cs
- Mappings.cs
- DataPagerField.cs
- KnownTypes.cs
- EntityModelBuildProvider.cs
- XpsFixedDocumentReaderWriter.cs
- recordstate.cs
- OdbcRowUpdatingEvent.cs
- EnumerableRowCollectionExtensions.cs
- TextEndOfParagraph.cs
- PreProcessor.cs
- ControlPager.cs
- MetadataItem.cs
- BasicExpressionVisitor.cs
- StaticResourceExtension.cs
- HttpDebugHandler.cs
- FrugalMap.cs
- PeerNameRecordCollection.cs
- ChildrenQuery.cs
- GraphicsPath.cs
- Helpers.cs
- NativeRecognizer.cs
- SupportsPreviewControlAttribute.cs
- AllMembershipCondition.cs
- DictionaryBase.cs
- PreservationFileWriter.cs
- DataFormats.cs
- InvalidEnumArgumentException.cs
- Button.cs
- GeneralTransformGroup.cs
- NGCPageContentCollectionSerializerAsync.cs
- Timer.cs
- PriorityBindingExpression.cs
- DebugView.cs
- HtmlAnchor.cs
- MessageContractImporter.cs
- XmlSchemaNotation.cs
- ConfigurationStrings.cs
- ButtonChrome.cs
- ArrayTypeMismatchException.cs
- UserCancellationException.cs
- counter.cs
- SqlStatistics.cs
- CompositeActivityTypeDescriptorProvider.cs
- ValidatedControlConverter.cs
- MarkedHighlightComponent.cs
- IsolatedStorageFilePermission.cs
- KeyInstance.cs
- XpsS0ValidatingLoader.cs
- OrCondition.cs
- XmlNotation.cs
- TextEditorMouse.cs
- HelpProvider.cs
- TdsValueSetter.cs
- ResourceReader.cs
- Quaternion.cs
- DrawingAttributes.cs
- DCSafeHandle.cs
- ErrorWrapper.cs
- GlyphInfoList.cs
- RecipientServiceModelSecurityTokenRequirement.cs
- Delegate.cs
- FilterException.cs
- WebZone.cs
- DataSourceNameHandler.cs
- FocusWithinProperty.cs
- DataGridViewColumnConverter.cs
- WindowsFormsSectionHandler.cs
- TimeSpanConverter.cs
- FamilyTypefaceCollection.cs
- NetPipeSection.cs
- ColorConvertedBitmapExtension.cs
- OracleConnectionString.cs
- QueryOperator.cs
- HMACSHA512.cs
- SymbolType.cs
- FormatterConverter.cs
- WebBrowserEvent.cs
- UnmanagedMemoryStreamWrapper.cs
- CustomErrorCollection.cs
- WinInetCache.cs
- DataColumnMappingCollection.cs
- AxisAngleRotation3D.cs
- SchemaNotation.cs
- ExpressionTextBox.xaml.cs
- EmbeddedMailObjectsCollection.cs
- ListDictionary.cs
- PartialTrustHelpers.cs
- MessageProperties.cs
- CollectionView.cs