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
- EntityConnection.cs
- Dictionary.cs
- EventlogProvider.cs
- ChtmlSelectionListAdapter.cs
- MonthChangedEventArgs.cs
- ToolboxItemSnapLineBehavior.cs
- DataGridHeaderBorder.cs
- XmlReader.cs
- FormViewDeleteEventArgs.cs
- PropertyItemInternal.cs
- TextProperties.cs
- DefaultExpression.cs
- NonSerializedAttribute.cs
- CDSCollectionETWBCLProvider.cs
- ServiceDescriptionSerializer.cs
- CorrelationResolver.cs
- CompilationUnit.cs
- RectangleConverter.cs
- BevelBitmapEffect.cs
- DocumentXPathNavigator.cs
- LabelInfo.cs
- GPPOINTF.cs
- HwndHost.cs
- embossbitmapeffect.cs
- FixUp.cs
- GcHandle.cs
- TextEditorTables.cs
- QilXmlWriter.cs
- DeadLetterQueue.cs
- ShellProvider.cs
- TypeToStringValueConverter.cs
- Oid.cs
- ServerIdentity.cs
- HandleCollector.cs
- ValidationHelper.cs
- DBSqlParserTableCollection.cs
- CancellationHandlerDesigner.cs
- EditBehavior.cs
- VideoDrawing.cs
- UnauthorizedWebPart.cs
- EpmTargetPathSegment.cs
- RemotingSurrogateSelector.cs
- PrtTicket_Editor.cs
- HeaderUtility.cs
- HitTestParameters.cs
- FilePrompt.cs
- CommonProperties.cs
- datacache.cs
- PeerToPeerException.cs
- VariableQuery.cs
- ThreadAttributes.cs
- TableAutomationPeer.cs
- EqualityComparer.cs
- NavigationFailedEventArgs.cs
- CodeTypeDeclarationCollection.cs
- WorkflowInstanceContextProvider.cs
- CriticalFileToken.cs
- SkewTransform.cs
- DataGridCheckBoxColumn.cs
- ImportedNamespaceContextItem.cs
- HttpProfileBase.cs
- Command.cs
- DataRow.cs
- MailBnfHelper.cs
- UpDownBase.cs
- SqlBooleanizer.cs
- DynamicField.cs
- XmlSchemaFacet.cs
- GC.cs
- DecimalAnimation.cs
- WebPartConnectVerb.cs
- XsltArgumentList.cs
- ServicePoint.cs
- TableRowCollection.cs
- AppDomainFactory.cs
- MetadataElement.cs
- EncryptedXml.cs
- OSEnvironmentHelper.cs
- PublisherMembershipCondition.cs
- DoubleAnimationUsingPath.cs
- FileVersionInfo.cs
- SettingsBase.cs
- RadioButtonPopupAdapter.cs
- CurrentChangedEventManager.cs
- CommonProperties.cs
- ListenerConnectionDemuxer.cs
- ApplicationManager.cs
- EventMappingSettings.cs
- DoubleKeyFrameCollection.cs
- DesignerCommandAdapter.cs
- DataSet.cs
- RecognitionEventArgs.cs
- _SecureChannel.cs
- BuildResultCache.cs
- ItemCheckedEvent.cs
- CodeStatementCollection.cs
- SqlColumnizer.cs
- FactoryId.cs
- MimeMultiPart.cs
- unsafenativemethodsother.cs