Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Runtime / Serialization / SerializationInfoEnumerator.cs / 1305376 / 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; using System.Diagnostics.Contracts; // // 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) { Contract.Assert(members!=null, "[SerializationInfoEnumerator.ctor]members!=null"); Contract.Assert(info!=null, "[SerializationInfoEnumerator.ctor]info!=null"); Contract.Assert(types!=null, "[SerializationInfoEnumerator.ctor]types!=null"); Contract.Assert(numItems>=0, "[SerializationInfoEnumerator.ctor]numItems>=0"); Contract.Assert(members.Length>=numItems, "[SerializationInfoEnumerator.ctor]members.Length>=numItems"); Contract.Assert(info.Length>=numItems, "[SerializationInfoEnumerator.ctor]info.Length>=numItems"); Contract.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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TransactionTable.cs
- DataQuery.cs
- ConnectionString.cs
- AssemblyUtil.cs
- FixedSOMPage.cs
- DecimalConstantAttribute.cs
- OperationBehaviorAttribute.cs
- BitmapEncoder.cs
- DataStorage.cs
- CqlErrorHelper.cs
- DataGridViewCellPaintingEventArgs.cs
- TypefaceMap.cs
- SourceSwitch.cs
- WorkflowServiceBehavior.cs
- StopStoryboard.cs
- TabletCollection.cs
- ColorBuilder.cs
- SrgsItemList.cs
- PartialTrustValidationBehavior.cs
- _ListenerRequestStream.cs
- ISAPIWorkerRequest.cs
- BitSet.cs
- SynchronizationValidator.cs
- Rotation3DKeyFrameCollection.cs
- ProcessProtocolHandler.cs
- ReferenceConverter.cs
- ScalarType.cs
- Action.cs
- DesigntimeLicenseContext.cs
- COSERVERINFO.cs
- InvokeMethodActivity.cs
- XmlSerializerOperationFormatter.cs
- MetadataItem_Static.cs
- XmlMapping.cs
- NumericUpDownAccelerationCollection.cs
- AppPool.cs
- SemaphoreFullException.cs
- LogPolicy.cs
- DataGridColumn.cs
- CodeSnippetTypeMember.cs
- DocumentPaginator.cs
- CompleteWizardStep.cs
- TrackingProfileManager.cs
- EdmConstants.cs
- ActivityExecutorDelegateInfo.cs
- UInt32Converter.cs
- BitmapEffectCollection.cs
- WebPartConnectionsConfigureVerb.cs
- BaseHashHelper.cs
- SafeRightsManagementQueryHandle.cs
- SingleQueryOperator.cs
- DataListGeneralPage.cs
- SQLString.cs
- RawStylusInputCustomData.cs
- AnnotationStore.cs
- NativeMethods.cs
- RepeaterItemEventArgs.cs
- IDispatchConstantAttribute.cs
- HMAC.cs
- ToolBar.cs
- FormatterConverter.cs
- CollectionDataContractAttribute.cs
- EventHandlersStore.cs
- AssemblyGen.cs
- IgnoreDataMemberAttribute.cs
- SingleStorage.cs
- CustomErrorsSectionWrapper.cs
- TypeDependencyAttribute.cs
- BindingList.cs
- ValueSerializerAttribute.cs
- Propagator.Evaluator.cs
- TagPrefixInfo.cs
- AppLevelCompilationSectionCache.cs
- ConfigXmlSignificantWhitespace.cs
- RuntimeHandles.cs
- IgnoreFileBuildProvider.cs
- RadioButtonStandardAdapter.cs
- AsyncDataRequest.cs
- DataGridViewRowCancelEventArgs.cs
- StorageMappingFragment.cs
- ComponentManagerBroker.cs
- SqlTrackingService.cs
- EntityException.cs
- DesignerAutoFormatCollection.cs
- BitVec.cs
- Property.cs
- ManualResetEventSlim.cs
- SpellerError.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- RuntimeHelpers.cs
- RtfControls.cs
- IconBitmapDecoder.cs
- CompiledXpathExpr.cs
- EdmItemError.cs
- DataQuery.cs
- HtmlDocument.cs
- StringReader.cs
- ConfigurationValidatorAttribute.cs
- ResourceAssociationType.cs
- ConnectionInterfaceCollection.cs