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
- RSAPKCS1SignatureFormatter.cs
- CompositionAdorner.cs
- BindingManagerDataErrorEventArgs.cs
- BypassElementCollection.cs
- SurrogateEncoder.cs
- _UncName.cs
- WorkflowMessageEventHandler.cs
- BufferBuilder.cs
- InputMethod.cs
- PageMediaType.cs
- assertwrapper.cs
- SharedStatics.cs
- RectAnimationClockResource.cs
- OrderPreservingPipeliningMergeHelper.cs
- StateFinalizationDesigner.cs
- SqlDataSourceCommandEventArgs.cs
- SafeHandles.cs
- DocumentApplication.cs
- SoapExtensionImporter.cs
- MiniModule.cs
- WindowsPen.cs
- ModulesEntry.cs
- TreeWalkHelper.cs
- SolidColorBrush.cs
- CellNormalizer.cs
- AppDomainAttributes.cs
- LinearGradientBrush.cs
- SystemNetworkInterface.cs
- SeverityFilter.cs
- CellTreeNodeVisitors.cs
- HostAdapter.cs
- SchemaNames.cs
- SelectManyQueryOperator.cs
- Behavior.cs
- Merger.cs
- EDesignUtil.cs
- XmlSchemaExporter.cs
- WebPartConnectionsCancelEventArgs.cs
- CustomTrackingRecord.cs
- Dictionary.cs
- Activator.cs
- KnownTypesHelper.cs
- SinglePageViewer.cs
- BitArray.cs
- ToolStripRendererSwitcher.cs
- OdbcStatementHandle.cs
- ReadWriteControlDesigner.cs
- EasingFunctionBase.cs
- Semaphore.cs
- Utils.cs
- IssuedSecurityTokenProvider.cs
- DbConnectionPoolIdentity.cs
- RemoteEndpointMessageProperty.cs
- ComponentCollection.cs
- RoleGroup.cs
- KnownTypesHelper.cs
- UnmanagedBitmapWrapper.cs
- DataSpaceManager.cs
- DbConnectionOptions.cs
- ActionNotSupportedException.cs
- DeriveBytes.cs
- Tag.cs
- DuplexClientBase.cs
- SchemaImporterExtensionElement.cs
- ColumnReorderedEventArgs.cs
- MultiByteCodec.cs
- DateTimeConverter2.cs
- StateItem.cs
- SqlCacheDependencySection.cs
- IntSecurity.cs
- CodeRegionDirective.cs
- AttachedPropertyInfo.cs
- DataKeyPropertyAttribute.cs
- RayHitTestParameters.cs
- IDQuery.cs
- BaseCollection.cs
- ConfigurationSectionCollection.cs
- ClientBuildManager.cs
- DbProviderConfigurationHandler.cs
- SmtpLoginAuthenticationModule.cs
- ConfigXmlComment.cs
- ContextMenuStrip.cs
- AnonymousIdentificationSection.cs
- WindowsTreeView.cs
- CancellationTokenRegistration.cs
- TextEffectCollection.cs
- AlternateView.cs
- XmlSchemaDatatype.cs
- ControlAdapter.cs
- SmiEventStream.cs
- ReadOnlyTernaryTree.cs
- OdbcFactory.cs
- AppSettingsSection.cs
- ReaderWriterLockWrapper.cs
- QueryResponse.cs
- GeneralTransform3D.cs
- BooleanKeyFrameCollection.cs
- ModuleBuilder.cs
- TemplateControlCodeDomTreeGenerator.cs
- TypedColumnHandler.cs