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
- DataGridColumnHeader.cs
- OracleRowUpdatedEventArgs.cs
- XmlWhitespace.cs
- ExtensionDataObject.cs
- WebPartZoneCollection.cs
- ListBoxItemWrapperAutomationPeer.cs
- ThreadPool.cs
- XmlUtil.cs
- ElementUtil.cs
- SHA1CryptoServiceProvider.cs
- JoinSymbol.cs
- CalendarBlackoutDatesCollection.cs
- RegularExpressionValidator.cs
- Filter.cs
- DesignerVerb.cs
- BooleanToSelectiveScrollingOrientationConverter.cs
- Reference.cs
- TrackingParameters.cs
- InputProcessorProfilesLoader.cs
- _SpnDictionary.cs
- MetadataResolver.cs
- FrameworkContentElement.cs
- ValidationSummary.cs
- SecurityTokenResolver.cs
- CriticalFileToken.cs
- FixedPosition.cs
- ReplacementText.cs
- MLangCodePageEncoding.cs
- XpsSerializerFactory.cs
- FactoryMaker.cs
- SemanticResolver.cs
- CommandEventArgs.cs
- path.cs
- AccessDataSource.cs
- AssemblyResourceLoader.cs
- ToolStripSeparatorRenderEventArgs.cs
- Query.cs
- UnionCodeGroup.cs
- CharKeyFrameCollection.cs
- BitmapInitialize.cs
- PersonalizationStateInfo.cs
- CaseInsensitiveOrdinalStringComparer.cs
- TextUtf8RawTextWriter.cs
- AssemblyEvidenceFactory.cs
- CompilerScope.cs
- Variable.cs
- EntityCommand.cs
- ListBoxAutomationPeer.cs
- PrinterUnitConvert.cs
- WindowCollection.cs
- ObjectDataSourceEventArgs.cs
- StringInfo.cs
- EncoderNLS.cs
- RegexStringValidator.cs
- ReachVisualSerializer.cs
- HMAC.cs
- XmlIlGenerator.cs
- ComplexType.cs
- EmptyEnumerator.cs
- ComplexType.cs
- TrustLevel.cs
- SqlDataReaderSmi.cs
- ReplyChannelAcceptor.cs
- ResourceContainer.cs
- DataGridViewCellStyleChangedEventArgs.cs
- Floater.cs
- SerializationInfoEnumerator.cs
- FilteredSchemaElementLookUpTable.cs
- ObjectDataSourceSelectingEventArgs.cs
- GetPageNumberCompletedEventArgs.cs
- ApplicationInfo.cs
- EnvelopedSignatureTransform.cs
- ToolboxItemFilterAttribute.cs
- EmbeddedObject.cs
- ReadOnlyNameValueCollection.cs
- ConfigsHelper.cs
- ProviderConnectionPoint.cs
- ConfigurationPropertyAttribute.cs
- SearchExpression.cs
- FtpWebResponse.cs
- HttpModule.cs
- LambdaCompiler.Binary.cs
- EditorZoneBase.cs
- DataSourceSelectArguments.cs
- VisualTreeHelper.cs
- StateMachine.cs
- FileChangeNotifier.cs
- ElementsClipboardData.cs
- HttpClientChannel.cs
- SeekableReadStream.cs
- ServiceProviders.cs
- XmlObjectSerializerWriteContextComplexJson.cs
- SecurityUtils.cs
- TextServicesLoader.cs
- InternalControlCollection.cs
- UnsafeNativeMethodsMilCoreApi.cs
- HandlerFactoryWrapper.cs
- DataColumnMappingCollection.cs
- OletxTransactionManager.cs
- ResolveNameEventArgs.cs