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
- StylusDownEventArgs.cs
- mactripleDES.cs
- SimpleMailWebEventProvider.cs
- BufferBuilder.cs
- ProtocolViolationException.cs
- RegexFCD.cs
- LookupNode.cs
- ExpressionStringBuilder.cs
- ParagraphVisual.cs
- TraceEventCache.cs
- SplashScreenNativeMethods.cs
- AlignmentXValidation.cs
- CommonProperties.cs
- DecoratedNameAttribute.cs
- ParseChildrenAsPropertiesAttribute.cs
- SplashScreen.cs
- DynamicDocumentPaginator.cs
- xamlnodes.cs
- Set.cs
- HtmlToClrEventProxy.cs
- TokenBasedSet.cs
- DataColumnMappingCollection.cs
- cookieexception.cs
- AddressHeaderCollection.cs
- ConstructorNeedsTagAttribute.cs
- SqlFormatter.cs
- HttpRuntime.cs
- XamlFilter.cs
- SoapMessage.cs
- MailDefinition.cs
- XamlDesignerSerializationManager.cs
- entityreference_tresulttype.cs
- DataGridViewRowsAddedEventArgs.cs
- MD5.cs
- ProcessHostServerConfig.cs
- RefreshPropertiesAttribute.cs
- Emitter.cs
- SymLanguageType.cs
- ImageMap.cs
- DataGridCell.cs
- _ProxyRegBlob.cs
- SqlStatistics.cs
- CryptoApi.cs
- CodeConditionStatement.cs
- PageClientProxyGenerator.cs
- JsonGlobals.cs
- PrePostDescendentsWalker.cs
- RuntimeResourceSet.cs
- ListViewItemMouseHoverEvent.cs
- WebPartHeaderCloseVerb.cs
- TranslateTransform3D.cs
- EntityProxyFactory.cs
- Margins.cs
- RoutedPropertyChangedEventArgs.cs
- XmlUtf8RawTextWriter.cs
- LocalizedNameDescriptionPair.cs
- HtmlToClrEventProxy.cs
- Encoding.cs
- CapabilitiesState.cs
- WebAdminConfigurationHelper.cs
- ServicePointManager.cs
- ReadOnlyAttribute.cs
- LinqDataSourceDeleteEventArgs.cs
- AttributeTableBuilder.cs
- CodeChecksumPragma.cs
- EntityDataSourceView.cs
- ToolStripItemEventArgs.cs
- SystemDiagnosticsSection.cs
- SoapAttributeOverrides.cs
- _ListenerResponseStream.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- AssociationProvider.cs
- AssociationSetEnd.cs
- CroppedBitmap.cs
- CodeCatchClause.cs
- FactoryMaker.cs
- ChangeDirector.cs
- EntityCommandCompilationException.cs
- PopOutPanel.cs
- ErrorEventArgs.cs
- GridViewDeletedEventArgs.cs
- DataSvcMapFileSerializer.cs
- WebPartEditorOkVerb.cs
- ValidatorCollection.cs
- DocumentPageTextView.cs
- Evaluator.cs
- ConsoleCancelEventArgs.cs
- NameValueSectionHandler.cs
- SerializationEventsCache.cs
- QilTargetType.cs
- DataServiceHostWrapper.cs
- WorkerProcess.cs
- BuiltInPermissionSets.cs
- TcpHostedTransportConfiguration.cs
- NonSerializedAttribute.cs
- UIElement3D.cs
- MasterPageBuildProvider.cs
- RegistryPermission.cs
- ListControl.cs
- StandardToolWindows.cs