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
- HttpListenerRequest.cs
- ClientScriptManager.cs
- XmlAttributeHolder.cs
- ZipIOBlockManager.cs
- TreeViewCancelEvent.cs
- SqlConnectionFactory.cs
- SubtreeProcessor.cs
- DataListItem.cs
- CompatibleIComparer.cs
- GenericQueueSurrogate.cs
- DetailsViewUpdateEventArgs.cs
- SAPICategories.cs
- XmlNamespaceMappingCollection.cs
- ObjectConverter.cs
- ProvidersHelper.cs
- XPathNavigator.cs
- ImageMap.cs
- PartialClassGenerationTask.cs
- MexHttpBindingCollectionElement.cs
- CodeSnippetTypeMember.cs
- NeutralResourcesLanguageAttribute.cs
- DBDataPermission.cs
- StrongNameKeyPair.cs
- ContourSegment.cs
- TableTextElementCollectionInternal.cs
- GreenMethods.cs
- BorderGapMaskConverter.cs
- ExpandCollapsePattern.cs
- QilSortKey.cs
- HMACSHA1.cs
- ListenerConnectionDemuxer.cs
- ConnectionManagementElement.cs
- ReversePositionQuery.cs
- NamedPipeTransportSecurityElement.cs
- HtmlTable.cs
- Identifier.cs
- TextTreeNode.cs
- SafeUserTokenHandle.cs
- XPathNavigator.cs
- MetadataItemEmitter.cs
- OleDbRowUpdatingEvent.cs
- SqlClientPermission.cs
- HtmlElementEventArgs.cs
- GenerateScriptTypeAttribute.cs
- ColorBlend.cs
- XsltConvert.cs
- ContextDataSourceContextData.cs
- PreviewKeyDownEventArgs.cs
- DefaultAsyncDataDispatcher.cs
- FixedPageAutomationPeer.cs
- EditingCoordinator.cs
- ReferenceSchema.cs
- DataServiceSaveChangesEventArgs.cs
- Light.cs
- ObjectItemCachedAssemblyLoader.cs
- EdmItemCollection.cs
- DataServiceClientException.cs
- Executor.cs
- XmlSchemaElement.cs
- HighlightComponent.cs
- SystemIPv6InterfaceProperties.cs
- InputLangChangeRequestEvent.cs
- XmlSchemaProviderAttribute.cs
- TriggerActionCollection.cs
- TimeSpanOrInfiniteConverter.cs
- WmlLabelAdapter.cs
- WindowsAuthenticationEventArgs.cs
- XamlSerializerUtil.cs
- _emptywebproxy.cs
- CmsInterop.cs
- X500Name.cs
- Dictionary.cs
- DbConnectionInternal.cs
- CompiledXpathExpr.cs
- TextRangeBase.cs
- XPathAncestorIterator.cs
- serverconfig.cs
- HttpWebRequest.cs
- CodeAttachEventStatement.cs
- Delay.cs
- HostingPreferredMapPath.cs
- TableRowGroup.cs
- OrderPreservingPipeliningSpoolingTask.cs
- LineProperties.cs
- IOThreadScheduler.cs
- CharacterShapingProperties.cs
- SqlConnectionHelper.cs
- FormsAuthenticationCredentials.cs
- RangeContentEnumerator.cs
- EventlogProvider.cs
- BoundColumn.cs
- AnnotationResource.cs
- SafeNativeMethods.cs
- WindowsGraphics2.cs
- BooleanFacetDescriptionElement.cs
- ZipPackage.cs
- InitializationEventAttribute.cs
- Polygon.cs
- TransactionTable.cs
- DrawingImage.cs