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
- MultiTouchSystemGestureLogic.cs
- DigitalSignatureProvider.cs
- XmlHierarchicalEnumerable.cs
- ObjectConverter.cs
- ApplicationDirectory.cs
- SettingsPropertyNotFoundException.cs
- PropertyPathConverter.cs
- CodeAttributeDeclaration.cs
- OdbcConnection.cs
- DataGridViewTopLeftHeaderCell.cs
- HealthMonitoringSectionHelper.cs
- COM2ExtendedTypeConverter.cs
- MethodAccessException.cs
- APCustomTypeDescriptor.cs
- InvalidComObjectException.cs
- ProfileSettingsCollection.cs
- OptimalTextSource.cs
- DBSqlParserColumn.cs
- FolderBrowserDialog.cs
- XLinq.cs
- QueryCacheManager.cs
- ListBindingConverter.cs
- NamespaceMapping.cs
- TaskFormBase.cs
- MailHeaderInfo.cs
- XamlToRtfParser.cs
- DataRowExtensions.cs
- Soap12ProtocolReflector.cs
- DataGridViewCellPaintingEventArgs.cs
- SecurityChannelListener.cs
- Normalization.cs
- GridViewRowEventArgs.cs
- _CacheStreams.cs
- X509ChainElement.cs
- InvalidDataException.cs
- FileClassifier.cs
- MsdtcClusterUtils.cs
- TokenizerHelper.cs
- diagnosticsswitches.cs
- MessagePropertyAttribute.cs
- PatternMatcher.cs
- DataGridViewRowEventArgs.cs
- UnknownBitmapDecoder.cs
- FrameworkContentElement.cs
- ProjectionCamera.cs
- Compiler.cs
- Slider.cs
- TrustManagerMoreInformation.cs
- tooltip.cs
- AssemblyLoader.cs
- KeyManager.cs
- XmlSignificantWhitespace.cs
- CrossContextChannel.cs
- CustomTypeDescriptor.cs
- KerberosTicketHashIdentifierClause.cs
- StyleHelper.cs
- Viewport2DVisual3D.cs
- GeneratedContractType.cs
- DataBoundControl.cs
- OleDbInfoMessageEvent.cs
- BypassElement.cs
- CounterSetInstance.cs
- CacheManager.cs
- ApplicationTrust.cs
- DrawingGroupDrawingContext.cs
- PropertyBuilder.cs
- MediaTimeline.cs
- ReliabilityContractAttribute.cs
- Parameter.cs
- AuthStoreRoleProvider.cs
- BaseDataBoundControlDesigner.cs
- HttpRuntime.cs
- CopyAction.cs
- AtomMaterializerLog.cs
- ProgressiveCrcCalculatingStream.cs
- TextRenderingModeValidation.cs
- AsyncStreamReader.cs
- BindingEditor.xaml.cs
- propertyentry.cs
- Int16.cs
- Transform.cs
- ConfigUtil.cs
- Journal.cs
- GACMembershipCondition.cs
- InlineUIContainer.cs
- PartBasedPackageProperties.cs
- ContentElementAutomationPeer.cs
- DataServiceHostFactory.cs
- QuotedStringWriteStateInfo.cs
- DependencyPropertyChangedEventArgs.cs
- Int32Collection.cs
- HelpKeywordAttribute.cs
- parserscommon.cs
- ExtenderControl.cs
- ActivationArguments.cs
- InstancePersistenceCommandException.cs
- Base64Encoder.cs
- Stack.cs
- DataTableCollection.cs
- MemoryFailPoint.cs