Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / 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]; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- NetCodeGroup.cs
- CacheMemory.cs
- TextTreeInsertElementUndoUnit.cs
- RouteValueDictionary.cs
- CornerRadius.cs
- EventBuilder.cs
- StringPropertyBuilder.cs
- DocumentCollection.cs
- PropertyPushdownHelper.cs
- StateWorkerRequest.cs
- DesignerDataSchemaClass.cs
- DesignerSerializerAttribute.cs
- SHA512Managed.cs
- AmbientEnvironment.cs
- MenuItemBindingCollection.cs
- PingReply.cs
- WebServiceErrorEvent.cs
- WebPartHeaderCloseVerb.cs
- CachingHintValidation.cs
- FormsAuthenticationConfiguration.cs
- ConstraintManager.cs
- UnsafeNativeMethods.cs
- ExtentJoinTreeNode.cs
- IndicFontClient.cs
- _AcceptOverlappedAsyncResult.cs
- Tracking.cs
- PlaceHolder.cs
- PrivateFontCollection.cs
- BreakRecordTable.cs
- RestClientProxyHandler.cs
- HttpRequest.cs
- HttpModuleActionCollection.cs
- WebControl.cs
- PropertyChangeTracker.cs
- XmlSchemaAll.cs
- PageFunction.cs
- PropertyValueChangedEvent.cs
- EventRouteFactory.cs
- TrustLevelCollection.cs
- FrameworkContentElementAutomationPeer.cs
- FrameworkRichTextComposition.cs
- UIAgentAsyncParams.cs
- AdornerPresentationContext.cs
- HtmlTableCell.cs
- DataList.cs
- StrongNamePublicKeyBlob.cs
- GridViewCommandEventArgs.cs
- FixedSOMPageConstructor.cs
- StrictModeSecurityHeaderElementInferenceEngine.cs
- RelationshipEnd.cs
- MetadataSource.cs
- WebPartDeleteVerb.cs
- GraphicsState.cs
- Request.cs
- StringCollection.cs
- ComponentManagerBroker.cs
- TextEndOfParagraph.cs
- BamlTreeNode.cs
- EmissiveMaterial.cs
- VisualStyleTypesAndProperties.cs
- IDictionary.cs
- TPLETWProvider.cs
- basenumberconverter.cs
- SoapExtensionStream.cs
- RSAProtectedConfigurationProvider.cs
- SharedPerformanceCounter.cs
- XpsFilter.cs
- RuleDefinitions.cs
- _IPv4Address.cs
- SizeIndependentAnimationStorage.cs
- NetStream.cs
- ListMarkerSourceInfo.cs
- MediaContextNotificationWindow.cs
- DataServiceQueryProvider.cs
- ReadOnlyObservableCollection.cs
- coordinator.cs
- CompiledELinqQueryState.cs
- ReliableMessagingHelpers.cs
- WizardForm.cs
- SharedStatics.cs
- FormClosingEvent.cs
- ParallelQuery.cs
- TextParaLineResult.cs
- AsyncResult.cs
- XamlFigureLengthSerializer.cs
- SystemIPv6InterfaceProperties.cs
- TemplateEditingService.cs
- SessionStateContainer.cs
- ColorBlend.cs
- ScopedKnownTypes.cs
- PhonemeEventArgs.cs
- SqlTriggerAttribute.cs
- RotateTransform3D.cs
- SqlClientMetaDataCollectionNames.cs
- NativeMethodsOther.cs
- PageContentCollection.cs
- BinaryWriter.cs
- PrivilegedConfigurationManager.cs
- PointLight.cs
- TabletDevice.cs