Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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]; } } } }
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XmlSchemaValidator.cs
- ControlParser.cs
- CopyCodeAction.cs
- WebServiceParameterData.cs
- ArraySegment.cs
- SerializationStore.cs
- Page.cs
- FtpWebRequest.cs
- WebPartZoneCollection.cs
- CommentAction.cs
- XmlReflectionMember.cs
- UpdatePanelTriggerCollection.cs
- APCustomTypeDescriptor.cs
- SafeProcessHandle.cs
- AutomationInteropProvider.cs
- CodeAttributeDeclaration.cs
- SHA384Managed.cs
- HtmlTableCell.cs
- DeadCharTextComposition.cs
- BufferBuilder.cs
- RootBrowserWindow.cs
- HttpInputStream.cs
- FixedSOMPageElement.cs
- XmlSerializerVersionAttribute.cs
- RadioButtonRenderer.cs
- ScriptIgnoreAttribute.cs
- _Semaphore.cs
- IdnMapping.cs
- TextBoxView.cs
- NamespaceImport.cs
- Encoder.cs
- EventLogEntry.cs
- ConstructorArgumentAttribute.cs
- IMembershipProvider.cs
- XmlSchemaInclude.cs
- DynamicValidatorEventArgs.cs
- ClickablePoint.cs
- DiffuseMaterial.cs
- DesignerAdapterAttribute.cs
- RelatedCurrencyManager.cs
- ADMembershipUser.cs
- URLMembershipCondition.cs
- LocalizeDesigner.cs
- ProjectionQueryOptionExpression.cs
- Camera.cs
- ToolStrip.cs
- ExpandableObjectConverter.cs
- SystemIPAddressInformation.cs
- BinaryReader.cs
- AssemblyName.cs
- DesignerVerb.cs
- DispatcherFrame.cs
- TextOutput.cs
- QuerySafeNavigator.cs
- ArcSegment.cs
- TraceContextRecord.cs
- SamlAssertion.cs
- ALinqExpressionVisitor.cs
- DesignerActionUIStateChangeEventArgs.cs
- RoutedEventHandlerInfo.cs
- SizeAnimation.cs
- DataGridViewCell.cs
- MobileFormsAuthentication.cs
- TimelineCollection.cs
- Model3DGroup.cs
- SymbolMethod.cs
- CalendarDay.cs
- EmptyImpersonationContext.cs
- ProbeMatchesMessageCD1.cs
- XmlQueryContext.cs
- HttpContextServiceHost.cs
- ComponentChangingEvent.cs
- counter.cs
- DefaultBinder.cs
- Emitter.cs
- TableLayout.cs
- WSMessageEncoding.cs
- CellTreeSimplifier.cs
- ForEachAction.cs
- GeometryModel3D.cs
- Content.cs
- SourceFileInfo.cs
- ImageList.cs
- MediaElement.cs
- PersistStreamTypeWrapper.cs
- MdiWindowListStrip.cs
- TableParaClient.cs
- TraceProvider.cs
- ZipIOFileItemStream.cs
- SimpleApplicationHost.cs
- EpmSyndicationContentSerializer.cs
- EnumType.cs
- DesigntimeLicenseContextSerializer.cs
- XamlGridLengthSerializer.cs
- SerializableAttribute.cs
- GenericRootAutomationPeer.cs
- RectValueSerializer.cs
- DataGridViewCheckBoxCell.cs
- DataGridAutoGeneratingColumnEventArgs.cs
- ToolstripProfessionalRenderer.cs