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
- DBSchemaTable.cs
- CommandHelpers.cs
- BinaryParser.cs
- sortedlist.cs
- DataSpaceManager.cs
- ContentDisposition.cs
- TextSelectionProcessor.cs
- LoginStatusDesigner.cs
- TraceEventCache.cs
- RoutedEventConverter.cs
- GZipStream.cs
- ConfigurationManagerInternalFactory.cs
- Rectangle.cs
- Canonicalizers.cs
- OracleSqlParser.cs
- ManifestResourceInfo.cs
- SrgsSemanticInterpretationTag.cs
- DataBoundControlHelper.cs
- ControlPersister.cs
- SqlFacetAttribute.cs
- ZipIOExtraFieldElement.cs
- TableLayoutStyleCollection.cs
- RegisteredScript.cs
- SafeLocalMemHandle.cs
- WorkflowTerminatedException.cs
- MatrixKeyFrameCollection.cs
- DbConnectionPoolIdentity.cs
- TextElement.cs
- ContentOperations.cs
- VirtualPathData.cs
- DPCustomTypeDescriptor.cs
- BitSet.cs
- TableAutomationPeer.cs
- MimeTypeMapper.cs
- HttpModulesSection.cs
- Scheduler.cs
- DeclarationUpdate.cs
- XmlSiteMapProvider.cs
- StoreAnnotationsMap.cs
- MailSettingsSection.cs
- BuildResult.cs
- BulletedListDesigner.cs
- Vector3DAnimationUsingKeyFrames.cs
- columnmapkeybuilder.cs
- Path.cs
- X509ServiceCertificateAuthentication.cs
- CollectionBuilder.cs
- BindingSource.cs
- PostBackTrigger.cs
- TransactionManagerProxy.cs
- SafeWaitHandle.cs
- FocusWithinProperty.cs
- mediaclock.cs
- clipboard.cs
- DrawingContextWalker.cs
- XsltException.cs
- OdbcDataAdapter.cs
- LassoSelectionBehavior.cs
- XmlBaseReader.cs
- ObjectListDataBindEventArgs.cs
- OracleBinary.cs
- SqlServices.cs
- StringFunctions.cs
- WindowInteropHelper.cs
- TrustManager.cs
- Triplet.cs
- ScalarConstant.cs
- CryptoKeySecurity.cs
- XPathItem.cs
- GlyphsSerializer.cs
- SetStoryboardSpeedRatio.cs
- compensatingcollection.cs
- AuthenticationModuleElementCollection.cs
- ErrorTableItemStyle.cs
- ScriptResourceAttribute.cs
- ListenDesigner.cs
- ConfigurationException.cs
- StreamSecurityUpgradeAcceptorBase.cs
- TextEncodedRawTextWriter.cs
- Point3DCollection.cs
- MessageDescriptionCollection.cs
- FormsAuthenticationEventArgs.cs
- Rect3DConverter.cs
- TabControl.cs
- NullEntityWrapper.cs
- PartialCachingAttribute.cs
- StreamMarshaler.cs
- BeginEvent.cs
- TypefaceMetricsCache.cs
- SelectionProviderWrapper.cs
- RelationshipType.cs
- HttpWebRequest.cs
- SafeNativeMethods.cs
- TableRowCollection.cs
- AddInSegmentDirectoryNotFoundException.cs
- Menu.cs
- OneToOneMappingSerializer.cs
- TcpChannelHelper.cs
- SlotInfo.cs
- HMACMD5.cs