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
- DrawingCollection.cs
- XmlNamespaceManager.cs
- ObjectDataSource.cs
- Expressions.cs
- ScriptComponentDescriptor.cs
- OptionUsage.cs
- XamlTreeBuilderBamlRecordWriter.cs
- dataobject.cs
- ReflectPropertyDescriptor.cs
- BufferModeSettings.cs
- GcSettings.cs
- Button.cs
- DataConnectionHelper.cs
- BindingValueChangedEventArgs.cs
- SerializerDescriptor.cs
- LambdaCompiler.Statements.cs
- SQLDoubleStorage.cs
- ServicesSection.cs
- BitStack.cs
- TreeIterator.cs
- BinarySecretSecurityToken.cs
- StateDesigner.CommentLayoutGlyph.cs
- HMAC.cs
- LightweightCodeGenerator.cs
- ReadContentAsBinaryHelper.cs
- OrderingInfo.cs
- UnknownWrapper.cs
- SymbolEqualComparer.cs
- ScrollBar.cs
- XmlReflectionMember.cs
- UIntPtr.cs
- MachineKeySection.cs
- ParserStack.cs
- ItemContainerProviderWrapper.cs
- BitmapEffectGeneralTransform.cs
- BuildDependencySet.cs
- ServiceCredentialsSecurityTokenManager.cs
- WebBrowserContainer.cs
- WizardStepBase.cs
- HttpRequest.cs
- TokenBasedSet.cs
- _NestedSingleAsyncResult.cs
- CompilerParameters.cs
- WebPartConnectionsConnectVerb.cs
- TemplateKeyConverter.cs
- WebPartRestoreVerb.cs
- CompilerCollection.cs
- LayoutTable.cs
- SHA384.cs
- SiteMapHierarchicalDataSourceView.cs
- DBBindings.cs
- ContextMenu.cs
- OperationPickerDialog.designer.cs
- XmlSchemaSimpleContentRestriction.cs
- Debug.cs
- StaticExtension.cs
- TemplateKey.cs
- ObjectSecurity.cs
- AnnotationMap.cs
- ValueQuery.cs
- DesignerAdRotatorAdapter.cs
- ParameterCollection.cs
- OleDbConnection.cs
- Stacktrace.cs
- CardSpaceException.cs
- ImportedPolicyConversionContext.cs
- HtmlTableRowCollection.cs
- ProjectionQueryOptionExpression.cs
- DesigntimeLicenseContext.cs
- DesignTimeParseData.cs
- CompositeActivityMarkupSerializer.cs
- XmlWriter.cs
- UrlAuthFailedErrorFormatter.cs
- LabelLiteral.cs
- Point.cs
- SortQuery.cs
- SqlProviderServices.cs
- Glyph.cs
- _ProxyRegBlob.cs
- RelationshipConverter.cs
- PropertyGridEditorPart.cs
- MailFileEditor.cs
- ADConnectionHelper.cs
- SystemException.cs
- Task.cs
- SqlUtils.cs
- RenderDataDrawingContext.cs
- WebPartCollection.cs
- GenericIdentity.cs
- MsmqIntegrationAppDomainProtocolHandler.cs
- BitmapDownload.cs
- TableDesigner.cs
- HttpServerVarsCollection.cs
- AnyReturnReader.cs
- CompilerCollection.cs
- HttpHandler.cs
- SqlConnectionString.cs
- Buffer.cs
- CalendarDataBindingHandler.cs
- GeneralTransformCollection.cs