Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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. // // ==--== /*============================================================ ** ** 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_currItem Object 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
- PagerSettings.cs
- MLangCodePageEncoding.cs
- ListBoxItem.cs
- TextAdaptor.cs
- PresentationSource.cs
- ReturnValue.cs
- InputBuffer.cs
- CompilationLock.cs
- OLEDB_Util.cs
- SystemInformation.cs
- _IPv6Address.cs
- DataGridViewCellLinkedList.cs
- AdornedElementPlaceholder.cs
- GridViewItemAutomationPeer.cs
- ExpressionEditorAttribute.cs
- DataQuery.cs
- TraceListeners.cs
- ProcessModule.cs
- DispatchWrapper.cs
- ScrollBarAutomationPeer.cs
- SystemIPv6InterfaceProperties.cs
- ProfessionalColorTable.cs
- BezierSegment.cs
- ResourceExpressionBuilder.cs
- IListConverters.cs
- SymbolType.cs
- ExpressionBinding.cs
- ToolStripPanelRenderEventArgs.cs
- HwndSourceParameters.cs
- MatrixCamera.cs
- MessageQueuePermission.cs
- WorkflowOperationBehavior.cs
- GeometryGroup.cs
- SmtpReplyReader.cs
- CompareValidator.cs
- XmlReflectionImporter.cs
- NodeFunctions.cs
- ModelItem.cs
- GridViewUpdateEventArgs.cs
- SecurityRuntime.cs
- PrintPreviewGraphics.cs
- Model3DGroup.cs
- SystemIcons.cs
- OracleTimeSpan.cs
- DetailsViewDeleteEventArgs.cs
- EnvironmentPermission.cs
- Transform.cs
- SqlDataSourceCache.cs
- InstalledFontCollection.cs
- TraceListeners.cs
- ServicePoint.cs
- ReflectionTypeLoadException.cs
- DiscoveryProxy.cs
- PersonalizationAdministration.cs
- ParseChildrenAsPropertiesAttribute.cs
- PlatformNotSupportedException.cs
- Compiler.cs
- DataBoundControl.cs
- KeyedByTypeCollection.cs
- VisualStyleInformation.cs
- Deserializer.cs
- TargetControlTypeCache.cs
- ExpressionWriter.cs
- NamespaceList.cs
- DataBindingExpressionBuilder.cs
- Transform.cs
- wmiprovider.cs
- ApplicationTrust.cs
- ColorTransform.cs
- UniqueIdentifierService.cs
- DataGridViewDesigner.cs
- X509CertificateStore.cs
- InvokePatternIdentifiers.cs
- BitmapImage.cs
- FullTrustAssembly.cs
- GlobalizationAssembly.cs
- Bidi.cs
- Utils.cs
- PreProcessInputEventArgs.cs
- ConfigurationLocation.cs
- CharConverter.cs
- SpinLock.cs
- TrustVersion.cs
- HtmlWindow.cs
- TreeNodeEventArgs.cs
- ListControl.cs
- BindableTemplateBuilder.cs
- categoryentry.cs
- RTLAwareMessageBox.cs
- DisplayInformation.cs
- XmlDataSource.cs
- sqlstateclientmanager.cs
- AdornerLayer.cs
- ReadOnlyObservableCollection.cs
- FixedSOMTableRow.cs
- EdmSchemaError.cs
- CopyOnWriteList.cs
- VersionPair.cs
- CommandBinding.cs
- XhtmlConformanceSection.cs