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
- NativeMethods.cs
- Convert.cs
- CurrentChangingEventArgs.cs
- InternalConfigHost.cs
- CategoryGridEntry.cs
- ColorInterpolationModeValidation.cs
- X500Name.cs
- TickBar.cs
- InvokeBase.cs
- TreeNode.cs
- DictionaryBase.cs
- Matrix3DConverter.cs
- AuthenticationServiceManager.cs
- SignedInfo.cs
- FormsAuthenticationConfiguration.cs
- SmiSettersStream.cs
- SQLInt16.cs
- BindingSource.cs
- _NestedSingleAsyncResult.cs
- HwndSourceParameters.cs
- MDIClient.cs
- OleCmdHelper.cs
- Point3D.cs
- SqlCommandBuilder.cs
- QueuePathDialog.cs
- ResponseBodyWriter.cs
- DataListCommandEventArgs.cs
- HelpEvent.cs
- QuaternionRotation3D.cs
- _NTAuthentication.cs
- cookieexception.cs
- EntityDataSourceDataSelection.cs
- XmlNodeChangedEventManager.cs
- Stack.cs
- DecoderFallback.cs
- EpmCustomContentSerializer.cs
- VarRefManager.cs
- TextSearch.cs
- Transform3DCollection.cs
- QueryReaderSettings.cs
- OleDbPermission.cs
- SystemIcmpV6Statistics.cs
- unsafenativemethodstextservices.cs
- QueryOptionExpression.cs
- SmtpFailedRecipientsException.cs
- FontStretchConverter.cs
- MessageHeader.cs
- CodeAttributeDeclarationCollection.cs
- MimeTypeAttribute.cs
- DataGridRelationshipRow.cs
- PageContentCollection.cs
- Ref.cs
- CaseKeyBox.ViewModel.cs
- AnnouncementInnerClientCD1.cs
- GetPageNumberCompletedEventArgs.cs
- ThemeableAttribute.cs
- TransportDefaults.cs
- TerminatorSinks.cs
- EpmSourcePathSegment.cs
- AssemblyBuilder.cs
- CodeSnippetExpression.cs
- SqlBooleanizer.cs
- WindowsContainer.cs
- ImportCatalogPart.cs
- ParenExpr.cs
- ClientScriptItem.cs
- x509store.cs
- HyperLinkColumn.cs
- ForeignConstraint.cs
- DataConnectionHelper.cs
- CodeAttributeDeclarationCollection.cs
- Fx.cs
- View.cs
- AnonymousIdentificationSection.cs
- Oci.cs
- Baml2006SchemaContext.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- BindingSource.cs
- PtsCache.cs
- CodeObjectCreateExpression.cs
- DbProviderManifest.cs
- UrlPath.cs
- GradientPanel.cs
- ColorMatrix.cs
- InfoCardRSACryptoProvider.cs
- AuthenticationSection.cs
- _ListenerRequestStream.cs
- AuthStoreRoleProvider.cs
- OdbcConnectionStringbuilder.cs
- TransformerInfoCollection.cs
- odbcmetadatacolumnnames.cs
- CodeDefaultValueExpression.cs
- DataServiceQueryProvider.cs
- AuthenticationModuleElementCollection.cs
- DateTimeStorage.cs
- MimeAnyImporter.cs
- Storyboard.cs
- ClusterRegistryConfigurationProvider.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- StorageMappingItemLoader.cs