Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Base / System / Windows / LocalValueEnumerator.cs / 1305600 / LocalValueEnumerator.cs
using System; using System.Collections; using System.Diagnostics; using MS.Internal.WindowsBase; #pragma warning disable 1634, 1691 // suppressing PreSharp warnings namespace System.Windows { ////// Local value enumeration object /// ////// Modifying local values (via SetValue or ClearValue) during enumeration /// is unsupported /// public struct LocalValueEnumerator : IEnumerator { ////// Overrides Object.GetHashCode /// ///An integer that represents the hashcode for this object public override int GetHashCode() { return base.GetHashCode(); } ////// Determine equality /// public override bool Equals(object obj) { if(obj is LocalValueEnumerator) { LocalValueEnumerator other = (LocalValueEnumerator) obj; return (_count == other._count && _index == other._index && _snapshot == other._snapshot); } else { // being compared against something that isn't a LocalValueEnumerator. return false; } } ////// Determine equality /// public static bool operator ==(LocalValueEnumerator obj1, LocalValueEnumerator obj2) { return obj1.Equals(obj2); } ////// Determine inequality /// public static bool operator !=(LocalValueEnumerator obj1, LocalValueEnumerator obj2) { return !(obj1 == obj2); } ////// Get current entry /// public LocalValueEntry Current { get { if(_index == -1 ) { #pragma warning suppress 6503 // IEnumerator.Current is documented to throw this exception throw new InvalidOperationException(SR.Get(SRID.LocalValueEnumerationReset)); } if(_index >= Count ) { #pragma warning suppress 6503 // IEnumerator.Current is documented to throw this exception throw new InvalidOperationException(SR.Get(SRID.LocalValueEnumerationOutOfBounds)); } return _snapshot[_index]; } } ////// Get current entry (object reference based) /// object IEnumerator.Current { get { return Current; } } ////// Move to the next item in the enumerator /// ///Success of the method public bool MoveNext() { _index++; return _index < Count; } ////// Reset enumeration /// public void Reset() { _index = -1; } ////// Return number of items represented in the collection /// public int Count { get { return _count; } } internal LocalValueEnumerator(LocalValueEntry[] snapshot, int count) { _index = -1; _count = count; _snapshot = snapshot; } private int _index; private LocalValueEntry[] _snapshot; private int _count; } ////// Represents a Property-Value pair for local value enumeration /// public struct LocalValueEntry { ////// Overrides Object.GetHashCode /// ///An integer that represents the hashcode for this object public override int GetHashCode() { return base.GetHashCode(); } ////// Determine equality /// public override bool Equals(object obj) { LocalValueEntry other = (LocalValueEntry) obj; return (_dp == other._dp && _value == other._value); } ////// Determine equality /// public static bool operator ==(LocalValueEntry obj1, LocalValueEntry obj2) { return obj1.Equals(obj2); } ////// Determine inequality /// public static bool operator !=(LocalValueEntry obj1, LocalValueEntry obj2) { return !(obj1 == obj2); } ////// Dependency property /// public DependencyProperty Property { get { return _dp; } } ////// Value of the property /// public object Value { get { return _value; } } internal LocalValueEntry(DependencyProperty dp, object value) { _dp = dp; _value = value; } // Internal here because we need to change these around when building // the snapshot for the LocalValueEnumerator, and we can't make internal // setters when we have public getters. internal DependencyProperty _dp; internal object _value; } } // 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
- EdgeProfileValidation.cs
- Window.cs
- SrgsOneOf.cs
- ToolStripItemTextRenderEventArgs.cs
- ExpressionEvaluator.cs
- CodeTypeParameterCollection.cs
- ReservationCollection.cs
- TextSelectionProcessor.cs
- JoinGraph.cs
- HtmlShimManager.cs
- ClassDataContract.cs
- COM2DataTypeToManagedDataTypeConverter.cs
- LinkDescriptor.cs
- WorkflowInlining.cs
- PropertyInformation.cs
- TypeLibConverter.cs
- Transform.cs
- DebuggerAttributes.cs
- PointCollectionValueSerializer.cs
- UriTemplateTrieLocation.cs
- HelpProvider.cs
- ListenerElementsCollection.cs
- ThreadStartException.cs
- DbSourceParameterCollection.cs
- SessionSwitchEventArgs.cs
- MediaContextNotificationWindow.cs
- SessionIDManager.cs
- MediaElementAutomationPeer.cs
- Invariant.cs
- WebReferencesBuildProvider.cs
- BitmapEffectInputConnector.cs
- EndpointInfo.cs
- ImportedNamespaceContextItem.cs
- DynamicDocumentPaginator.cs
- EditorZoneBase.cs
- SortQueryOperator.cs
- Point.cs
- TypefaceCollection.cs
- DrawingVisual.cs
- OracleBoolean.cs
- EdmRelationshipRoleAttribute.cs
- DataGridAddNewRow.cs
- PieceDirectory.cs
- PerfCounterSection.cs
- ApplicationBuildProvider.cs
- DataIdProcessor.cs
- HttpValueCollection.cs
- GridView.cs
- FlagsAttribute.cs
- InvariantComparer.cs
- RoutedEventValueSerializer.cs
- BinaryParser.cs
- BitmapEffectGeneralTransform.cs
- StreamGeometryContext.cs
- TypeConverterAttribute.cs
- SByte.cs
- ToolStripEditorManager.cs
- StateChangeEvent.cs
- ErrorProvider.cs
- BuilderPropertyEntry.cs
- TreeView.cs
- PageResolution.cs
- UniqueIdentifierService.cs
- InitializationEventAttribute.cs
- SchemaInfo.cs
- AnnouncementService.cs
- OdbcConnectionFactory.cs
- SequentialWorkflowHeaderFooter.cs
- VerbConverter.cs
- WizardStepBase.cs
- HybridObjectCache.cs
- Signature.cs
- RuntimeCompatibilityAttribute.cs
- PropertyValueUIItem.cs
- ListViewItemMouseHoverEvent.cs
- PasswordTextContainer.cs
- ResourceContainer.cs
- DSASignatureDeformatter.cs
- SqlConnectionString.cs
- SqlDataReader.cs
- TextDecorationCollection.cs
- DoubleCollection.cs
- PropertyGridDesigner.cs
- SqlClientWrapperSmiStream.cs
- SqlRecordBuffer.cs
- HttpRequestCacheValidator.cs
- TextEmbeddedObject.cs
- MultiPropertyDescriptorGridEntry.cs
- ConfigurationConverterBase.cs
- DataGridHeaderBorder.cs
- HttpListenerRequestUriBuilder.cs
- ArgumentNullException.cs
- MenuItem.cs
- MatchAllMessageFilter.cs
- SmtpNtlmAuthenticationModule.cs
- CodeDomDesignerLoader.cs
- VersionValidator.cs
- ResXFileRef.cs
- SchemaTableColumn.cs
- WindowsButton.cs