Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / clr / src / BCL / System / Runtime / Serialization / SerializationInfoEnumerator.cs / 1 / SerializationInfoEnumerator.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: SerializationInfoEnumerator ** ** ** Purpose: A formatter-friendly mechanism for walking all of ** the data in a SerializationInfo. Follows the IEnumerator ** mechanism from Collections. ** ** ============================================================*/ namespace System.Runtime.Serialization { using System; using System.Collections; // // The tuple returned by SerializationInfoEnumerator.Current. // [System.Runtime.InteropServices.ComVisible(true)] public struct SerializationEntry { private Type m_type; private Object m_value; private String m_name; public Object Value { get { return m_value; } } public String Name { get { return m_name; } } public Type ObjectType { get { return m_type; } } internal SerializationEntry(String entryName, Object entryValue, Type entryType) { m_value = entryValue; m_name = entryName; m_type = entryType; } } // // A simple enumerator over the values stored in the SerializationInfo. // This does not snapshot the values, it just keeps pointers to the // member variables of the SerializationInfo that created it. // [System.Runtime.InteropServices.ComVisible(true)] public sealed class SerializationInfoEnumerator : IEnumerator { String[] m_members; Object[] m_data; Type[] m_types; int m_numItems; int m_currItem; bool m_current; internal SerializationInfoEnumerator(String[] members, Object[] info, Type[] types, int numItems) { BCLDebug.Assert(members!=null, "[SerializationInfoEnumerator.ctor]members!=null"); BCLDebug.Assert(info!=null, "[SerializationInfoEnumerator.ctor]info!=null"); BCLDebug.Assert(types!=null, "[SerializationInfoEnumerator.ctor]types!=null"); BCLDebug.Assert(numItems>=0, "[SerializationInfoEnumerator.ctor]numItems>=0"); BCLDebug.Assert(members.Length>=numItems, "[SerializationInfoEnumerator.ctor]members.Length>=numItems"); BCLDebug.Assert(info.Length>=numItems, "[SerializationInfoEnumerator.ctor]info.Length>=numItems"); BCLDebug.Assert(types.Length>=numItems, "[SerializationInfoEnumerator.ctor]types.Length>=numItems"); m_members = members; m_data = info; m_types = types; //The MoveNext semantic is much easier if we enforce that [0..m_numItems] are valid entries //in the enumerator, hence we subtract 1. m_numItems = numItems-1; m_currItem = -1; m_current = false; } public bool MoveNext() { if (m_currItemObject IEnumerator.Current { //Actually returns a SerializationEntry get { if (m_current==false) { throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_EnumOpCantHappen")); } return (Object)(new SerializationEntry(m_members[m_currItem], m_data[m_currItem], m_types[m_currItem])); } } public SerializationEntry Current { //Actually returns a SerializationEntry get { if (m_current==false) { throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_EnumOpCantHappen")); } return (new SerializationEntry(m_members[m_currItem], m_data[m_currItem], m_types[m_currItem])); } } public void Reset() { m_currItem = -1; m_current = false; } public String Name { get { if (m_current==false) { throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_EnumOpCantHappen")); } return m_members[m_currItem]; } } public Object Value { get { if (m_current==false) { throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_EnumOpCantHappen")); } return m_data[m_currItem]; } } public Type ObjectType { get { if (m_current==false) { throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_EnumOpCantHappen")); } return m_types[m_currItem]; } } } } // 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
- CodeExpressionStatement.cs
- MediaCommands.cs
- XPathExpr.cs
- ColorAnimation.cs
- SerializationInfoEnumerator.cs
- BamlTreeUpdater.cs
- XmlSchemaObjectCollection.cs
- CqlLexer.cs
- EmptyReadOnlyDictionaryInternal.cs
- SpellCheck.cs
- ActionNotSupportedException.cs
- ToolStripSystemRenderer.cs
- PipeStream.cs
- CodeGenerator.cs
- XhtmlBasicLiteralTextAdapter.cs
- DataGridViewAdvancedBorderStyle.cs
- ICspAsymmetricAlgorithm.cs
- DataGridViewHitTestInfo.cs
- SqlBuilder.cs
- CodeStatement.cs
- DiscreteKeyFrames.cs
- StringHelper.cs
- HijriCalendar.cs
- VirtualStackFrame.cs
- HandledMouseEvent.cs
- RequestCachePolicy.cs
- SystemNetHelpers.cs
- HostedHttpTransportManager.cs
- NotFiniteNumberException.cs
- TextTreeRootNode.cs
- HttpFileCollection.cs
- ChtmlTextBoxAdapter.cs
- DesignerHost.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- EventLogPermissionEntry.cs
- ImplicitInputBrush.cs
- Identity.cs
- StateFinalizationActivity.cs
- LocationReferenceEnvironment.cs
- PersonalizationDictionary.cs
- RelationshipDetailsRow.cs
- ApplicationHost.cs
- KeyGesture.cs
- QueryIntervalOp.cs
- ThicknessAnimationUsingKeyFrames.cs
- PathSegmentCollection.cs
- EditorPartChrome.cs
- Message.cs
- Range.cs
- DrawingCollection.cs
- RegexTypeEditor.cs
- DoubleCollectionConverter.cs
- RequestCacheEntry.cs
- SchemaTypeEmitter.cs
- HttpProfileBase.cs
- Triplet.cs
- TextEffectCollection.cs
- EventRoute.cs
- CacheHelper.cs
- SchemaNames.cs
- RuleSettings.cs
- AppDomainUnloadedException.cs
- WindowsAuthenticationModule.cs
- NewExpression.cs
- FolderLevelBuildProviderCollection.cs
- VectorAnimationBase.cs
- CriticalFinalizerObject.cs
- ColumnMapProcessor.cs
- WindowsGraphics2.cs
- TTSEngineTypes.cs
- mediaclock.cs
- DynamicScriptObject.cs
- URI.cs
- SoapIgnoreAttribute.cs
- GridToolTip.cs
- CancellationHandler.cs
- FontDriver.cs
- AxisAngleRotation3D.cs
- OptionalColumn.cs
- XamlBrushSerializer.cs
- SqlRetyper.cs
- __TransparentProxy.cs
- WrappedIUnknown.cs
- Type.cs
- ContentType.cs
- ExceptionHelpers.cs
- HttpContext.cs
- VisualStyleInformation.cs
- IsolatedStorageFile.cs
- MachineKeyConverter.cs
- IdentifierCollection.cs
- CombinedGeometry.cs
- ActiveXSite.cs
- BaseConfigurationRecord.cs
- ServiceMemoryGates.cs
- WhiteSpaceTrimStringConverter.cs
- PersonalizableTypeEntry.cs
- RepeaterItem.cs
- TypedReference.cs
- OperationInvokerTrace.cs